下面是一些捕获事件调度线程上抛出的异常的代码:
package com.ndh.swingjunk;
import java.awt.EventQueue;
import javax.swing.JFrame;
public class EntryPoint {
public static void main(String[] args) {
Thread.setDefaultUncaughtExceptionHandler(new MyExceptionHandler());
// System.setProperty("sun.awt.exception.handler", MyExceptionHandler.class.getName());
EventQueue.invokeLater(new Runnable()
{
public void run()
{
new SomeWindow("foo").setVisible(true);
}
});
}
}
class SomeWindow extends JFrame {
public SomeWindow(String title) {
this.setTitle(title);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
throw new RuntimeException("hello");
}
}
我已经看到警告说事件调度线程上引发的异常不会由 UncaughtExceptionHandler 处理,但我的示例似乎并非如此;无论注册行是被注释掉还是留在里面,它的工作原理都是一样的。我的例子是否搞砸了,或者注册异常处理程序sun.awt.exception.handler
不再需要?