【发布时间】:2009-02-26 00:52:50
【问题描述】:
如果我在 .NET 中没记错的话,可以为未处理的异常注册“全局”处理程序。我想知道Java是否有类似的东西。
【问题讨论】:
标签: java exception exception-handling
如果我在 .NET 中没记错的话,可以为未处理的异常注册“全局”处理程序。我想知道Java是否有类似的东西。
【问题讨论】:
标签: java exception exception-handling
是的,有 defaultUncaughtExceptionHandler,但只有在 Thread 没有设置 uncaughtExceptionHandler 时才会触发。
【讨论】:
是的,ThreadGroup 中有一个“几乎”全局的此类处理程序。它不像你提到的那样全局,但你基本上可以实现相同的功能。
从 Java 5 开始,Thread class 上直接提供了类似的功能。
【讨论】:
通常,像 Struts 和 Spring(以及 Servlet Spec、IIRC)这样的 Java 框架允许您设置全局异常处理程序。不过,这些机制特定于每个框架。
【讨论】:
.NET Java 中未处理的异常:
Thread.setDefaultUncaughtExceptionHandler(new
Thread.UncaughtExceptionHandler() {
public void uncaughtException(Thread t1, Throwable e1) {
// Exception handling code
}
});
从here偷来的
【讨论】:
假设它就像 C++ 中的 catch(...) 你会这样做:
尝试 { // 你的代码在这里 } 抓住(可投掷的前) { // 任何类型的异常,即使虚拟机被花生呛到了 }一般来说,这不是一个好主意,除非您正在处理第 3 方代码(您应该尝试始终在自己的代码中抛出 Exception 的子类(而不是 RuntimeException) - 除非它表明应该是 delt 的程序员错误通过单元测试。
【讨论】: