欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-04-15 17:46:27
1. 背景介绍在开发过程中, 遇到平台代码不规范的写法(如下图), 将异常直接吃掉, 或者吞掉了详细堆栈. 当生产运行到这段代码时, 抛出的信息非常少, 而且不知道是哪行代码抛出的异常, 排除问题非常困难. 为解决这个问题, 想到了一个好办法.2. 解决思路将jdk中的java.lang.Exception类重写. 在本机创建Exception这个类, 并在构造器中将堆栈输出package java.lang;public class Exception extends Throwabl...

1. 背景介绍

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

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

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