这篇文章主要介绍了Java异常跟踪栈定义与用法,结合具体实例形式分析了异常处理栈的概念、原理及相关使用技巧,需要的朋友可以参考下
本文实例讲述了Java异常跟踪栈定义与用法。分享给大家供大家参考,具体如下:
一、异常跟踪栈简介
异常对象的printstacktrace方法用于打印异常的跟踪栈信息,根据printstacktrace方法的输出结果,我们可以找到异常的源头,并跟踪到异常一路触发的过程。
二、main方法中异常跟踪栈的应用
1 代码示例
class SelfException extends RuntimeException { SelfException(){} SelfException(String msg) { super(msg); } } public class printstacktraceTest { public static void main(String[] args) { firstMethod(); } public static void firstMethod() { secondMethod(); } public static void secondMethod() { thirdMethod(); } public static void thirdMethod() { throw new SelfException("自定义异常信息"); } }
2 运行结果
Exception in thread "main" SelfException: 自定义异常信息
at printstacktraceTest.thirdMethod(printstacktraceTest.java:26)
at printstacktraceTest.secondMethod(printstacktraceTest.java:22)
at printstacktraceTest.firstMethod(printstacktraceTest.java:18)
at printstacktraceTest.main(printstacktraceTest.java:14)
3 结果分析
只要异常没有被完全捕获,异常从发生异常的方法逐渐向外传播,首先传给该方法的调用者,该方法调用者再次创给其调用者……直至最后传到 main方法,如果main方法依然没有处理该异常,JVM会中止该程序,并打印异常的跟踪栈信息。
三、多线程中异常跟踪栈的应用
1 代码示例
public class ThreadExceptionTest implements Runnable { public void run() { firstMethod(); } public void firstMethod() { secondMethod(); } public void secondMethod() { int a = 5; int b = 0; int c = a / b; } public static void main(String[] args) { new Thread(new ThreadExceptiontest()).start(); } }
2 运行结果
Exception in thread "Thread-0" java.lang.ArithmeticException: / by zero
at ThreadExceptionTest.secondMethod(ThreadExceptionTest.java:16)
at ThreadExceptionTest.firstMethod(ThreadExceptionTest.java:10)
at ThreadExceptionTest.run(ThreadExceptionTest.java:6)
at java.lang.Thread.run(Thread.java:619)
3 结果分析
程序在Thread的run方法中出现了ArithmeticException异常,这个异常的源头是ThreadException的SecondMethod方法,位于文件16行。这个异常传播到Thread类的run方法就会结束。
更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。