Java异常学习二:异常栈轨迹
二.栈轨迹
package com.jyz.study.jdk.exception;/** * 栈轨迹 * @author JoyoungZhang@gmail.com * */public class StackTrace { public static void main(String[] args) {test1(); } private static void test1(){test2(); } private static void test2(){test3(); } private static void test3(){throw new NullPointerException("str is null"); }}?
Exception in thread "main" java.lang.NullPointerException: str is nullat com.jyz.study.jdk.exception.StackTrace.test3(StackTrace.java:24)at com.jyz.study.jdk.exception.StackTrace.test2(StackTrace.java:20)at com.jyz.study.jdk.exception.StackTrace.test1(StackTrace.java:16)at com.jyz.study.jdk.exception.StackTrace.main(StackTrace.java:12)?
三.fillInStackTrace方法?
package com.jyz.study.jdk.exception;/** * 栈轨迹 * fillInStackTrace * @author JoyoungZhang@gmail.com * */public class FillInStackTrace { public static void main(String[] args) throws Exception {test1(); } private static void test1() throws Exception{try{ test2();}catch(NullPointerException ex){//1 throw (Exception)ex.fillInStackTrace();//2 throw new Exception();} } private static void test2(){test3(); } private static void test3(){throw new NullPointerException("str is null"); }}1和2的异常栈信息均如图。不同的是this本身的信息,控制台第一行打印的就是this。
1的栈信息Exception in thread "main" java.lang.NullPointerException: str is nullat com.jyz.study.jdk.exception.FillInStackTrace.test1(FillInStackTrace.java:20)at com.jyz.study.jdk.exception.FillInStackTrace.main(FillInStackTrace.java:13)2的栈信息Exception in thread "main" java.lang.Exceptionat com.jyz.study.jdk.exception.FillInStackTrace.test1(FillInStackTrace.java:21)at com.jyz.study.jdk.exception.FillInStackTrace.main(FillInStackTrace.java:13)?
?