这是我在使用 Eclipse 进行调试时遇到的一个小烦恼。选中“未捕获的异常时暂停执行”后,调试器通常会在引发异常的位置暂停线程。然而,事件调度线程上的异常会导致它在 EventDispatchThread.run() 的最后一行暂停。在我恢复线程以允许堆栈跟踪打印到控制台之前,没有关于异常是什么或导致异常的原因的有用信息。
在Eclipse中调试以下代码进行演示:
public class SuspendOnUncaughtTest {
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
((Object) null).toString();
}
});
}
}
这是抛出异常后的样子:
编辑 10/21/2011: 我想 Eclipse 或 Java 调试器没有发生任何奇怪的事情,只是在 EventDispatchThread.pumpOneEventForFilters(int) 中捕获并重新抛出异常。我想没有办法告诉 Eclipse“暂停执行将要捕获并可能重新抛出的异常”。太糟糕了。
最佳答案
在 NeteBeans 中看到类似的结果,但是 Thread.setDefaultUncaughtExceptionHandler()
在这种情况下可能有用。有一个例子here .
关于java - Eclipse/Java : uncaught exceptions on the EDT suspend execution in EventDispatchThread. 运行(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7825376/