Java线程组与未处理异常的实例分析-创新互联-成都创新互联网站建设

关于创新互联

多方位宣传企业产品与服务 突出企业形象

公司简介 公司的服务 荣誉资质 新闻动态 联系我们

Java线程组与未处理异常的实例分析-创新互联

这篇文章主要讲解了“Java线程组与未处理异常的实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java线程组与未处理异常的实例分析”吧!

成都创新互联公司是一家集网站建设,惠安企业网站建设,惠安品牌网站建设,网站定制,惠安网站建设报价,网络营销,网络优化,惠安网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

一 点睛

从JDK1.5开始,Java加强了线程的异常处理,如果线程执行过程中抛出了一个未处理的异常,JVM在结束该线程之前会自动查找是否有对应的Thread.UncaughtExceptionHandler对象,如果找到该处理器对象,将会调用该对象的uncaughtException(Thread t, Throwable e)方法来处理该异常。

Thread.UncaughtExceptionHandler是Thread类的一个内部公共静态接口,该接口内只有一个方法:void uncaughtException(Thread t, Throwable e),该方法中的t代表出现异常的线程,而e代表该线程抛出的异常。

线程组处理异常的默认流程:

1 如果该线程组有父线程组,则调用父线程组的uncaughtException方法来处理该异常。

2 如果该线程实例所属的线程类有默认的异常处理器(由setDefaultUncaughtExceptionHandler方法设置的异常处理器),那就调用该异常处理器来处理该异常。

3 如果该异常对象是ThreadDeath的对象,将不做任何处理;否则将异常跟踪栈的信息打印到System.err错误输出流,并结束该线程。

二 实战

1 代码

// 定义自己的异常处理器class MyExHandler implements Thread.UncaughtExceptionHandler{   // 实现uncaughtException方法,该方法将处理线程的未处理异常   public void uncaughtException(Thread t, Throwable e)   {      System.out.println(t + " 线程出现了异常:" + e);   }}public class ExHandler{   public static void main(String[] args)   {      // 设置主线程的异常处理器      Thread.currentThread().setUncaughtExceptionHandler        (new MyExHandler());      int a = 5 / 0;   // ①      System.out.println("程序正常结束!");   }}

2 运行

Thread[main,5,main] 线程出现了异常:java.lang.ArithmeticException: / by zero

3 说明

程序指定的异常处理器对未捕获的异常进行了处理,但程序依然不会正常结束。这说明异常处理器与通过catch捕获异常是不同的——当使用catch捕获异常时,异常不会向上传递给上一级调用者,但使用异常处理器对异常进行处理之后,异常依然会传递给上一级调用者。

感谢各位的阅读,以上就是“Java线程组与未处理异常的实例分析”的内容了,经过本文的学习后,相信大家对Java线程组与未处理异常的实例分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联网站建设公司,,小编将为大家推送更多相关知识点的文章,欢迎关注!


当前标题:Java线程组与未处理异常的实例分析-创新互联
URL地址:http://kswsj.cn/article/cejipd.html

其他资讯