我有
throw new IndexOutOfBoundsException();
我的代码中的行。不幸的是,这个异常没有任何影响:即没有出现消息,也没有程序崩溃。
这是因为系统库中的某处调用了代码,并捕获并处理了异常。
如何找到这个地方?
如果我在这一行按F8
,我会跳转到Scene
中的代码:
try {
tm = dndGesture.processTargetDrop(dragEvent);
} finally {
DragboardHelper.setDataAccessRestriction(
dndGesture.dragboard, true);
}
但是这段代码会捕获异常吗?我认为它应该只执行 finally
block ,然后转到某个地方的 catch
block 。但这不会发生:如果我继续按 F8
,我看不到任何 try/catch/finally
block 。
这怎么会发生?
最佳答案
您正在寻找一个异常断点,您可以将其设置为在异常被捕获时中断。在“断点”对话框中(默认绑定(bind)到 Ctrl+Shift+F8 或 Cmd+Shift+F8,具体取决于平台,或单击“调试”任务 Pane 中的 ),创建一个 Java 异常断点,并在捕获和未捕获时发出通知.
然后,一旦您的断点触发,您应该能够单步执行代码并查看调用堆栈并查看是什么捕获了它。
有关详细信息,请参阅 Creating Exception Breakpoints在 IntelliJ IDEA 文档中,它链接到关于断点对话框中所有配置选项的细节。
关于java - 如何跳转到 IntelliJ 调试器捕获异常的地方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38635590/