未捕获异常处理程序内的未捕获异常

5

这个问题可能听起来有点傻 ;)

如果在UncaughtExceptionHandler中遇到未捕获的异常,你会如何处理?


这是否意味着您已经有了UncaughtExceptionHandler,并且现在想在该处理程序内处理未捕获的异常? - Naved
2个回答

5

非常有趣的问题,我以前从未考虑过。

该方法似乎是在您的线程上设置自己的uncaughtExceptionHandler,否则它将传递给JAVAsdefaultUncaughtExceptionHandler

我进行了一些快速的谷歌搜索,并找到了一个类似的案例,用于从Android获取崩溃数据。 我认为您可能会对此链接感兴趣How do I obtain crash-data from my Android application?


2
问题更像是,如果在未捕获异常处理程序内部发生未捕获异常的情况下尝试关闭组件,并且该组件也抛出异常,会发生什么。 - mibollma

4

好的,你必须自己捕获它们。你提供的 uncaughtException() 的文档清楚地说明了这一点:

此方法抛出的任何异常都将被 Java 虚拟机忽略。

但是你只能计划到这里。所以你处理异常处理程序的异常,但是谁来处理那段代码呢?就像记录失败的日志事件一样。异常处理程序无处不在...


1
嗯,这很奇怪。当我在Android上测试时,故意抛出异常时似乎会出现循环。看来这是某种Android的bug。 - mibollma
1
当我在IBM AIX上引入一个错误,呃,我是说“测试”它时,它对我也进行了循环。 - Joseph Gordon
@mibollma,Android是标准JVM吗? - Pacerier
@Pacerier 我认为它没有经过Java标准化流程。然而在这种情况下,更有可能是一个bug,因为Android文档陈述了几乎相同的行为:http://d.android.com/reference/java/lang/Thread.UncaughtExceptionHandler.html#uncaughtException%28java.lang.Thread,%20java.lang.Throwable%29 - mibollma
@mibollma,奇怪的是,我在“正常”的JVM上也遇到了同样的问题:https://dev59.com/0YHba4cB1Zd3GeqPUKrO - Pacerier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接