如果我在.NET中正确记得,可以为未处理的异常注册“全局”处理程序。我想知道Java是否有类似的东西。
答案 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通过单元测试。