JavaSe:UncaughtExceptionHandler,javase

作者:操作系统

JavaSe:UncaughtExceptionHandler,javase

 Java中,现身对于特别的管理,平日是行使try{}catch()来捕获处理的。不过在应用trycatch时,未必会将有着的丰裕都捕获到,所以措施注脚时得以有throws xxxException。

对此这种景观,JVM到底是怎么管理的吗?上面就来看一看:

 

如果不行未有被catch到,那么会走接下来的流水生产线:

1)由Thread自身的uncaughtExceptionHandler来处理

前提是Thread#uncaughtExceptionHandler不是Null。

如果是null,执行2)。

2)由Thread所属的ThreadGroup的uncaughtException方法来拍卖。

       2.1)要是ThreadGroup有parent group,那么就调用parent group的uncaughtException来管理。也正是说,要调用最顶层的ThreadGroup的uncaughtException来拍卖。管理完结就得了。最顶层的ThreadGroup管理进度是2.2)。

       2.2)Thread类中有一个类静态变量:defaultUncaughtExceptionHandler。

         假使有设置该值,就调用该handler的uncaughtException来拍卖。

         若无安装defaultUncaughtExceptionHandler值,又不是ThreadDeath错误,则直接在System.error中打出十一分日志(包蕴丰裕栈)。

 

上述管理进程,参见:Thread#dispatchUncaughtException(Throwable e);

 

那么在大家编辑代码时,是足以经过:

1)Thread#setUncaughtExceptionHander() 来为有些线程设置UncaughtExceptionHander。

2)Thread.setDefaultUncaughtExceptionHander()来为设置暗中认可的UncaughtExceptionHander。

3)即便想要改造暗中同意的调治流程:能够重写ThreadGroup#uncaughtException() 来完成。

Java 中,出现对于那多少个的拍卖,经常是运用 try{}catch() 来捕获管理的。 可是在选择 trycatch 时,未必会将全数...

本文由金冠53777-金冠娱乐53777-Welcome发布,转载请注明来源

关键词: