Java异常跟踪栈定义与用法示例
本文实例讲述了Java异常跟踪栈定义与用法。分享给大家供大家参考,具体如下:
一、异常跟踪栈简介
异常对象的printStackTrace方法用于打印异常的跟踪栈信息,根据printStackTrace方法的输出结果,我们可以找到异常的源头,并跟踪到异常一路触发的过程。
二、main方法中异常跟踪栈的应用
1代码示例
classSelfExceptionextendsRuntimeException { SelfException(){} SelfException(Stringmsg) { super(msg); } } publicclassPrintStackTraceTest { publicstaticvoidmain(String[]args) { firstMethod(); } publicstaticvoidfirstMethod() { secondMethod(); } publicstaticvoidsecondMethod() { thirdMethod(); } publicstaticvoidthirdMethod() { thrownewSelfException("自定义异常信息"); } }
2运行结果
Exceptioninthread"main"SelfException:自定义异常信息
atPrintStackTraceTest.thirdMethod(PrintStackTraceTest.java:26)
atPrintStackTraceTest.secondMethod(PrintStackTraceTest.java:22)
atPrintStackTraceTest.firstMethod(PrintStackTraceTest.java:18)
atPrintStackTraceTest.main(PrintStackTraceTest.java:14)
3结果分析
只要异常没有被完全捕获,异常从发生异常的方法逐渐向外传播,首先传给该方法的调用者,该方法调用者再次创给其调用者……直至最后传到main方法,如果main方法依然没有处理该异常,JVM会中止该程序,并打印异常的跟踪栈信息。
三、多线程中异常跟踪栈的应用
1代码示例
publicclassThreadExceptionTestimplementsRunnable { publicvoidrun() { firstMethod(); } publicvoidfirstMethod() { secondMethod(); } publicvoidsecondMethod() { inta=5; intb=0; intc=a/b; } publicstaticvoidmain(String[]args) { newThread(newThreadExceptionTest()).start(); } }
2运行结果
Exceptioninthread"Thread-0"java.lang.ArithmeticException:/byzero
atThreadExceptionTest.secondMethod(ThreadExceptionTest.java:16)
atThreadExceptionTest.firstMethod(ThreadExceptionTest.java:10)
atThreadExceptionTest.run(ThreadExceptionTest.java:6)
atjava.lang.Thread.run(Thread.java:619)
3结果分析
程序在Thread的run方法中出现了ArithmeticException异常,这个异常的源头是ThreadException的SecondMethod方法,位于文件16行。这个异常传播到Thread类的run方法就会结束。
更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。