Java中是否存在未处理的异常处理程序?

时间:2009-02-26 00:52:51

标签: java exception exception-handling

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

6 个答案:

答案 0 :(得分:27)

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

答案 1 :(得分:5)

答案 2 :(得分:1)

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

从Java 5开始,Thread class上可以直接使用类似的功能。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

.NET 未处理的 Java 异常:

Thread.setDefaultUncaughtExceptionHandler(new
Thread.UncaughtExceptionHandler() {
  public void uncaughtException(Thread t1, Throwable e1) {
   // Exception handling code  
  }
});  

here那里偷来的

答案 5 :(得分:-3)

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

try
{
   // your code here
}
catch(Throwable ex)
{
   // any sort of exception, even if the VM has choked on a peanut
}

一般来说,这不是一个好主意,除非你正在处理第三方代码(你应该尝试在你自己的代码中总是抛出异常(而不是RuntimeException)的子类 - 除非它表明程序员错误应该是delt通过单元测试。