java - 如何跳转到 IntelliJ 调试器捕获异常的地方?

标签 java debugging intellij-idea exception

我有

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 中的 the breakpoint dialog button),创建一个 Java 异常断点,并在捕获和未捕获时发出通知.

Screenshot of Breakpoint dialog

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

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

关于java - 如何跳转到 IntelliJ 调试器捕获异常的地方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38635590/

相关文章:

java - 当运行时异常发生时,JPA如何处理提交

php - 如何在 PHP (Laravel) 中调试 "Symfony\Component\Debug\Exception\FatalErrorException"错误?

c++ - Qt 5.1.1调试错误代码-1073741521

java - 将外部 jar (lib/*.jar) 添加到 IntelliJ IDEA 项目的正确方法

go - 在 IntelliJ 中保存文件时执行 gofmt

java - Netbeans 中 Maven 构建命令的链接

java - Hibernate 3.6.7 到 4.0.1 升级,嵌套事务

java - Spring RabbitMQ - xml配置 - 手动ack

c - 从 GDB 解码 ARM 指令

java - 如何在 Scala 2.8 注释中指定静态数组?