exception 打印出异常栈踪迹

Java异常抛出使用e.printStackTrace(),打印出抛出的异常栈踪迹,

如果你在catch中继续抛出这个异常,那么e.printStackTrace()也能跟踪到抛出异常的地方,

使用throw new RunTimeException(e.fillInStackTrace()),改变异常栈踪迹。

public class TestException {
    public static void main(String[] args) {
        TestException testException = new TestException();
        testException.testException();
    }

    public void testException()
    {
        try {
            int num  = 1/0;

        }catch (RuntimeException e)
        {    
            throw new RuntimeException(e.fillInStackTrace());
       //
throw new RuntimeException(e);
      }
  }
}

console打印

Exception in thread "main" java.lang.RuntimeException: java.lang.ArithmeticException: / by zero
    at com.jxufe.study.jsonstudy.test.TestException.testException(TestException.java:22)
    at com.jxufe.study.jsonstudy.test.TestException.main(TestException.java:11)
Caused by: java.lang.ArithmeticException: / by zero
    ... 2 more

将上面的

throw new RuntimeException(e.fillInStackTrace()); 改为   throw new RuntimeException(e);

console打印

Exception in thread "main" Disconnected from the target VM, address: '127.0.0.1:57316', transport: 'socket'
java.lang.RuntimeException: java.lang.ArithmeticException: / by zero
    at com.jxufe.study.jsonstudy.test.TestException.testException(TestException.java:22)
    at com.jxufe.study.jsonstudy.test.TestException.main(TestException.java:11)
Caused by: java.lang.ArithmeticException: / by zero
    at com.jxufe.study.jsonstudy.test.TestException.testException(TestException.java:17)
    ... 1 more

跟踪到抛出异常的第17行代码 int num = 1/0;

原文地址:https://www.cnblogs.com/alway-july/p/6557094.html