最简单的版本是设置默认的未捕获异常处理程序:
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { public void uncaughtException(Thread t, Throwable e) { // do something }});但这也捕获了程序其他部分抛出的未捕获异常。
但是,您可以使用代理仅捕获从swing事件调度线程抛出的运行时异常(有关更多信息,请参见此页,从那里复制代码):
class EventQueueProxy extends EventQueue { protected void dispatchEvent(AWTEvent newEvent) { try { super.dispatchEvent(newEvent); } catch (Throwable t) { // do something more useful than: t.printStackTrace(); } }}现在像这样安装它:
Toolkit.getDefaultToolkit().getSystemEventQueue().push(new EventQueueProxy());



