我有
throw new IndexOutOfBoundsException();
在我的代码中排队。不幸的是,这个例外没有任何影响:即没有出现任何消息,也没有程序崩溃。
这是因为代码是从系统库中的某个地方调用的,并且会捕获并处理异常。
如何找到这个地方?
如果我在此行上按F8
,我会跳转到Scene
内的代码:
try {
tm = dndGesture.processTargetDrop(dragEvent);
} finally {
DragboardHelper.setDataAccessRestriction(
dndGesture.dragboard, true);
}
但此代码是否会捕获异常?我认为它应该只执行finally
块然后转到某个地方的catch
块。但这不会发生:如果我继续按F8
,我看不到任何try/catch/finally
块。
这怎么可能发生?
答案 0 :(得分:1)
您正在寻找一个异常断点,即使它被捕获,您也可以设置为异常断点。在“断点”对话框中(默认情况下,它绑定到Ctrl + Shift + F8或Cmd + Shift + F8,具体取决于平台,或单击“调试”任务窗格中的),创建一个Java异常断点,并在两者上都有通知和未捕获。
然后,一旦你的断点触发,你应该能够单步执行代码并查看调用堆栈,看看它是什么捕获它。
有关详细信息,请参阅IntelliJ IDEA文档中的Creating Exception Breakpoints,该文档链接到断点对话框中有关所有配置选项的详细信息。