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

 更新时间:2018年05月18日 11:13:21   作者:chengqiuming  
这篇文章主要介绍了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程序设计有所帮助。

相关文章

  • IntelliJ IDEA 2021.1 首个 Beta 版本发布

    IntelliJ IDEA 2021.1 首个 Beta 版本发布

    这篇文章主要介绍了IntelliJ IDEA 2021.1 首个 Beta 版本发布,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • spring中@ComponentScan自动扫描并指定扫描规则

    spring中@ComponentScan自动扫描并指定扫描规则

    本文主要介绍了spring中@ComponentScan自动扫描并指定扫描规则,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • 浅谈JAVA并发之ReentrantLock

    浅谈JAVA并发之ReentrantLock

    本文主要介绍了基于AQS实现的ReentrantLock(重入锁),感兴趣的同学,可以参考下。
    2021-06-06
  • 详解SpringBoot多跨域请求的支持(JSONP)

    详解SpringBoot多跨域请求的支持(JSONP)

    跨域是很多项目需要遇到的文章,本篇文章主要介绍了详解SpringBoot多跨域请求的支持(JSONP),具有一定的参考价值,有兴趣的可以了解一下
    2017-04-04
  • 浅谈关于Mybatis的mapper-locations配置问题

    浅谈关于Mybatis的mapper-locations配置问题

    MyBatis 是一款优秀的半自动的ORM持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作,需要的朋友可以参考下
    2023-05-05
  • Spring @Cacheable注解类内部调用失效的解决方案

    Spring @Cacheable注解类内部调用失效的解决方案

    这篇文章主要介绍了Spring @Cacheable注解类内部调用失效的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • 关于Java虚拟机HotSpot

    关于Java虚拟机HotSpot

    这篇文章主要介绍了关于Java虚拟机HotSpot,在Java类中的一些方法会被由C/C++编写的HotSpot虚拟机的C/C++函数调用,不过由于Java方法与C/C++函数的调用约定不同,所以并不能直接调用,需要JavaCalls::call()这个函数辅助调用,下面我们来看看文章对内容的具体介绍
    2021-11-11
  • Java文本文件操作方法实例详解

    Java文本文件操作方法实例详解

    这篇文章主要介绍了Java文本文件操作方法,以实例形式较为详细的分析了java操作文本文件的相关技巧,需要的朋友可以参考下
    2015-06-06
  • java读写excel文件实现POI解析Excel的方法

    java读写excel文件实现POI解析Excel的方法

    在日常工作中,我们常常会进行Excel文件读写操作,这篇文章主要介绍了java读写excel文件实现POI解析Excel的方法,实例分析了java读写excel的技巧,非常具有实用价值,需要的朋友可以参考下
    2018-10-10
  • RxJava2 Scheduler使用实例深入解析

    RxJava2 Scheduler使用实例深入解析

    这篇文章主要为大家介绍了RxJava2 Scheduler使用实例深入解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10

最新评论