Java中是否有未处理的exception处理程序?

如果我在.NET中正确记得,可以为未处理的exception注册“全局”处理程序。 我想知道Java是否有类似的东西。

是的,有defaultUncaughtExceptionHandler ,但它只在Thread没有设置uncaughtExceptionHandler触发。

是的, ThreadGroup中有一个“几乎”全局的这样的处理程序。 它不像你提到的那样全球化,但你基本上可以实现相同的function。

从Java 5开始, Thread类上直接提供了类似的function。

通常,像Struts和Spring(以及Servlet规范,IIRC)这样的Java框架允许您设置全局exception处理程序。 但是,这些机制特定于每个框架。

假设它类似于C ++中的catch(…),你会这样做:

尝试
 {
    //你的代码在这里
 }
 catch(Throwable ex)
 {
    //任何类型的exception,即使VM已经在花生上窒息
 }

一般来说,这不是一个好主意,除非您正在处理第三方代码(您应该尝试始终在您自己的代码中抛出Exception(而不是RuntimeException)的子类 – 除非它指示程序员错误应该通过单元进行删除测试。