gpt4 book ai didi

java - 在 Java 调试器中,如何忽略从未通过我的代码的异常

转载 作者:搜寻专家 更新时间:2023-10-31 08:04:22 27 4
gpt4 key购买 nike

我目前正在使用 IntelliJ IDEA 进行 Java 开发,但我也对针对其他 IDE 的答案或调试 Java 代码的一般概念感兴趣。因为这是我在许多 IDE 中都错过的功能,所以我不确定在从其他语言转移我的调试习惯时是否错过了工作流概念。

假设我正在 myapp.* 中编写一些代码,同时使用来自 somelib.* 的框架类。典型的堆栈跟踪可能从任一包开始,并可能在它们之间切换多次。还假设我在假设我的代码 中存在错误而库代码 中没有任何错误的情况下进行调试。堆栈跟踪示例(仅显示类名):

somelib.D (current stack frame)
somelib.C
myapp.Y
myapp.X
somelib.B
somelib.A

通常,我对以下类型的异常不感兴趣,也不希望调试器中断它们:

  • somelib.B 中抛出并在 somelib.A 中捕获。库代码抛出异常以处理库内有问题的状态或停止应用程序。在后一种情况下,我只对异常消息感兴趣,希望它能告诉我哪里出了问题。

  • somelib.D 中抛出并在 somelib.C 中捕获。库代码可以使用异常作为一种逻辑形式,在这种情况下,尝试执行特定操作并在出现问题时采取替代路线,或者通过其他方式通知我的代码(例如,在适当的情况下返回空引用) .

我感兴趣的异常类型:

  • somelib.Csomelib.D 中抛出,而不在 somelib.Csomelib.D 中捕获。在这里,我希望调试器在 myapp.Y 中我从 somelib.C 调用代码的行中断。

  • myapp.Xmyapp.Y 中抛出,要么被捕获,要么未被捕获。在这里,我希望调试器在抛出异常的那一行中断。

IntelliJ IDEA 为我提供了选项,让我可以选择是否要在捕获或未捕获的异常上中断,或同时中断这两者,并将异常抛出的位置限制在一组类中。这些选项没有太大帮助,因为我通常希望中断任何异常,无论是捕获还是未捕获,只要我编写的代码在抛出的位置和捕获的位置之间,最终.

最佳答案

您可以创建两个异常断点:

  1. 每当 myapp.* 中出现异常(捕获或未捕获)时触发的异常断点。为此目的使用类过滤器(查看 here 以了解类过滤器)。
  2. 每当“somelib.C1orsomelib.B”中存在未捕获的异常时触发的异常断点。再次使用类过滤器来限制断点。

关于java - 在 Java 调试器中,如何忽略从未通过我的代码的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3335587/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com