如何跳转IntelliJ调试器中捕获的异常?

时间:2016-07-28 11:53:20

标签: java debugging intellij-idea exception-handling

我有

throw new IndexOutOfBoundsException();

在我的代码中排队。不幸的是,这个例外没有任何影响:即没有出现任何消​​息,也没有程序崩溃。

这是因为代码是从系统库中的某个地方调用的,并且会捕获并处理异常。

如何找到这个地方?

如果我在此行上按F8,我会跳转到Scene内的代码:

            try {
                tm = dndGesture.processTargetDrop(dragEvent);
            } finally {
                DragboardHelper.setDataAccessRestriction(
                        dndGesture.dragboard, true);
            }

但此代码是否会捕获异常?我认为它应该只执行finally块然后转到某个地方的catch块。但这不会发生:如果我继续按F8,我看不到任何try/catch/finally块。

这怎么可能发生?

1 个答案:

答案 0 :(得分:1)

您正在寻找一个异常断点,即使它被捕获,您也可以设置为异常断点。在“断点”对话框中(默认情况下,它绑定到Ctrl + Shift + F8或Cmd + Shift + F8,具体取决于平台,或单击“调试”任务窗格中的the breakpoint dialog button),创建一个Java异常断点,并在两者上都有通知和未捕获。

Screenshot of Breakpoint dialog

然后,一旦你的断点触发,你应该能够单步执行代码并查看调用堆栈,看看它是什么捕获它。

有关详细信息,请参阅IntelliJ IDEA文档中的Creating Exception Breakpoints,该文档链接到断点对话框中有关所有配置选项的详细信息。