2

有时 Eclipse 调试器会在方法末尾有当前指令指针的异常处停止。调试视图此刻说“线程......(暂停(异常......))”

为什么它不会停在异常抛出的地方?

如何检查这些异常?要查看他们的消息和堆栈跟踪?

4

2 回答 2

1

您可以使调试器在引发异常的地方停止。

Debug透视图的Breakpoints选项卡上,单击“J!” 顶部的图标。输入一个例外。它将出现在断点列表中。

您可以配置调试器是否停止未捕获的异常或捕获的异常或两者兼而有之。

这对于 NullPointerExceptions 特别有用。

 Why it doesn't stop at exception throw place?

如果您正在跳过代码,那么您也正在跳过该代码中引发的异常。

 How to inspect these exception? To see their messages and stack traces?

您可以在Debug透视图的Variables视图中检查异常。

于 2013-02-01T16:17:04.227 回答
1

它不会停止,因为当在 Java 中引发异常时,它会一直导航到堆栈跟踪,试图找到可能捕获异常的东西。Eclipse 仅在 JVM 到达堆栈跟踪中的最后一个元素时停止线程,因此异常进入“未处理”领域。我还没有在 Eclipse 中找到任何关于如何直接从中获取堆栈跟踪的具体内容。您永远不会在这里引用异常。您可以使用 J! “断点”视图中的图标可以在抛出某种类型的异常时停止,这将帮助您获得所需的内容。

我建议您做的事情是添加一个自定义UncaughtExceptionHandler来处理像这样的未捕获异常。例如:

Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
    public void uncaughtException(Thread t, Throwable e) {
        // Replace the following line with your own handling code
        e.printStackTrace();
        ErrorHelper.showDetailError(e);
    }
});
于 2013-02-01T16:22:19.157 回答