Java异常跟踪栈定义与用法示例

网友投稿 221 2023-02-04


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 firsthttp://Method()

{

secondMethod();

}

public static void secondMethod()

{

thirdMethod();

}

public static void thirdMethod()

{

throw new JLKTlePOhSelfException("自定义异常信息");

}

}

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程序设计有所帮助。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:连接共享文件夹步骤(如何连接网络共享文件夹)
下一篇:java线程状态有什么(java线程有哪几种状态)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~