如何在Eclipse调试器中检查“当前”异常?

时间:2013-02-01 16:10:54

标签: java eclipse debugging exception watch

有时,Eclipse调试器在方法结束时具有当前指令指针的异常处停止。调试视图目前说“thread ...(Suspended(exception ...))”

为什么它不会在异常投掷地点停止?

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

2 个答案:

答案 0 :(得分: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 视图中检查异常。

答案 1 :(得分: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);
    }
});