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

Dim*_*ims 5 java debugging exception intellij-idea

我有

throw new IndexOutOfBoundsException();
Run Code Online (Sandbox Code Playgroud)

我的代码中的行。不幸的是,这个异常没有任何影响:即没有消息出现,也没有程序崩溃。

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

如何找到这个地方?

如果我按F8这一行,我会跳到里面的代码Scene

            try {
                tm = dndGesture.processTargetDrop(dragEvent);
            } finally {
                DragboardHelper.setDataAccessRestriction(
                        dndGesture.dragboard, true);
            }
Run Code Online (Sandbox Code Playgroud)

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

怎么会发生这种事呢?

小智 0

您正在寻找一个异常断点,您可以将其设置为在异常被捕获时中断。在“断点”对话框中(默认情况下绑定到 Ctrl+Shift+F8 或 Cmd+Shift+F8,具体取决于平台,或者单击断点对话框按钮在“调试”任务窗格中),创建一个 Java 异常断点,并包含有关“已捕获”和“未捕获”的通知。

断点对话框的屏幕截图

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

有关更多信息,请参阅IntelliJ IDEA 文档中的创建异常断点,其中链接到有关断点对话框中所有配置选项的详细信息。

  • 我认为这是不同的。因为我知道在哪里抛出异常(在我的代码中明确),所以我不需要找到这个地方。我需要找出接下来会发生什么异常。 (3认同)