分享

异常跟踪栈

 孤独一兵 2016-10-01

异常跟踪栈

一 .异常跟踪栈简介

异常对象的printStackTrace方法用于打印异常的跟踪栈信息,根据printStackTrace方法的输出结果,我们可以找到异常的源头,并跟踪到异常一路触发的过程。

二. main方法中异常跟踪栈的应用

1. 代码示例

Java代码

  1. class SelfException extends RuntimeException

  2. {

  3. SelfException(){}

  4. SelfException(String msg)

  5. {

  6. super(msg);

  7. }

  8. }

  9. public class PrintStackTraceTest

  10. {

  11. public static void main(String[] args)

  12. {

  13. firstMethod();

  14. }

  15. public static void firstMethod()

  16. {

  17. secondMethod();

  18. }

  19. public static void secondMethod()

  20. {

  21. thirdMethod();

  22. }

  23. public static void thirdMethod()

  24. {

  25. throw new SelfException('自定义异常信息');

  26. }

  27. }

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 .代码示例

Java代码

  1. public class ThreadExceptionTest implements Runnable

  2. {

  3. public void run()

  4. {

  5. firstMethod();

  6. }

  7. public void firstMethod()

  8. {

  9. secondMethod();

  10. }

  11. public void secondMethod()

  12. {

  13. int a = 5;

  14. int b = 0;

  15. int c = a / b;

  16. }

  17. public static void main(String[] args)

  18. {

  19. new Thread(new ThreadExceptionTest()).start();

  20. }

  21. }

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学习交流群,群号码:184625948【长按复制】 我们一起学Java!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多