当前位置: 移动技术网 > IT编程>开发语言>Java > java开发中找出隐藏的异常(解决异常定位)

java开发中找出隐藏的异常(解决异常定位)

2020年08月01日  | 移动技术网IT编程  | 我要评论
1. 背景介绍在开发过程中, 遇到平台代码不规范的写法(如下图), 将异常直接吃掉, 或者吞掉了详细堆栈. 当生产运行到这段代码时, 抛出的信息非常少, 而且不知道是哪行代码抛出的异常, 排除问题非常困难. 为解决这个问题, 想到了一个好办法.2. 解决思路将jdk中的java.lang.Exception类重写. 在本机创建Exception这个类, 并在构造器中将堆栈输出package java.lang;public class Exception extends Throwabl

1. 背景介绍

在开发过程中, 遇到平台代码不规范的写法(如下图), 将异常直接吃掉, 或者吞掉了详细堆栈. 当生产运行到这段代码时, 抛出的信息非常少, 而且不知道是哪行代码抛出的异常, 排除问题非常困难. 为解决这个问题, 想到了一个好办法.

在这里插入图片描述

2. 解决思路

  1. 将jdk中的java.lang.Exception类重写. 在本机创建Exception这个类, 并在构造器中将堆栈输出
package java.lang; public class Exception extends Throwable { static final long serialVersionUID = -3387516993124229948L; public Exception() { super(); this.printStackTrace(); // 将堆栈输出 } public Exception(String message) { super(message); this.printStackTrace(); } public Exception(String message, Throwable cause) { super(message, cause); this.printStackTrace(); } public Exception(Throwable cause) { super(cause); this.printStackTrace(); } protected Exception(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { super(message, cause, enableSuppression, writableStackTrace); this.printStackTrace(); } } 
  1. 通过javac命令将Exception.java构建, 得到Exception.class
  2. 再将Exception.class替换到$JAVA_HOME/jre/lib/rt.jar中的对应Execetion类

2. 验证

  1. 测试类
public class TestUserDefineNullPointerException { static void f1() { f2(); } private static void f2() { String s = null; s.length(); } public static void main(String[] args) { System.out.println("start..."); try { f1(); } catch (Exception e) { // 此处Exception虽然被吃了, 但控制台依然打出了异常堆栈 System.out.println("in.........."); } } } 
  1. 控制台输出结果
in..........
	at chapter4.TestUserDefineNullPointerException.f2(TestUserDefineNullPointerException.java:11)
	at chapter4.TestUserDefineNullPointerException.f1(TestUserDefineNullPointerException.java:6)
	at chapter4.TestUserDefineNullPointerException.main(TestUserDefineNullPointerException.java:18) 

本文地址:https://blog.csdn.net/weixin_45244678/article/details/108265509

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网