正如另一位发布者所提到的,您的问题是该异常正在另一个线程(事件调度线程)中引发。几个解决方案:
- 在发生异常的实际代码周围进行尝试/捕获:例如,如果它是对ActionListener处理的按钮单击的响应,则将try / catch放入actionPerformed()方法内;
- 或者,将异常保留为未捕获的异常,然后添加未捕获的异常处理程序。例如:
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { public void uncaughtException(Thread t, Throwable e) { // ... do something with exception here ... }});
在旁注中,原则上您应该将UI启动代码放在SwingUtilities.invokeLater()中。



