Intellij Idea IntelliJ中是否存在“异常时中断”?

hwamh0ep  于 2023-02-11  发布在  其他
关注(0)|答案(6)|浏览(184)

是否有在第一次出现异常时自动中断调试的功能?
所以我们
1.启动应用程序
1.做一些抛出异常的事情
1.发生异常的高亮行弹出IntelliJ。

aiazj4mn

aiazj4mn1#

跑|查看断点|异常断点

omjgkv6w

omjgkv6w2#

弹出该对话框的快捷方法是按Ctrl + Shift + F8(在Mac上:Cmd + SHIFT + F8),然后点击异常断点选项卡,如果这是你查看的最后一个选项卡,它仍然会被选中,这样就很容易打开和关闭异常断点。
这将导致IntelliJ在代码(或库代码)中引发异常的位置处中断。具体来说,在遍历堆栈以查找要执行的catch/finally块之前,您获得了异常处理的"第一次机会"。
提示:Java在加载类时倾向于在内部抛出大量异常,因此中断所有异常可能会变得相当乏味。好消息是您可以使用 * condition * 字段排除某些类型的异常。
例如:

!(this instanceof java.lang.ClassNotFoundException)

可以将多个此类条件与&&链接在一起。

sqougxex

sqougxex3#

IntelliJ IDEA 14中,转到:
Run -> View Breakpoints -> Check "Java Exceptions Breakpoints" -> Uncheck "Caught Exceptions"
如果不取消选中Caught Exceptions,则每次Java Framework引发内部异常时,执行都会停止。

56lgkhnf

56lgkhnf4#

在新版本的intellij中,它位于 * 运行 查看断点 * 下。
然后您可以选中 Java异常断点 * -〉 任何异常 *。
调试异常的一个好方法是使用主应用包和通配符.*,这样就可以跳过所有其他库异常,因为大多数时候您查找的是应用抛出的异常,而不是其他库抛出的异常(可能有很多异常)。
如图所示,我使用com.gs.mercury.*在每次应用抛出异常时中断。如果你使用异常的目的是为了处理异常情况,而不是处理正常情况的流程,那么你几乎总是在到达所需的异常时才会停止。
您可以使用 Catch class filters 来指定您希望捕获的异常的类,使用 Class filters 来指定您希望在哪些类中捕获异常。
注:在注解中添加了@Roman对 *Catch类过滤器 * 和 *Class过滤器 * 之间的说明。
回答只是为了指出非常有用的 * 捕获类过滤器 * 和 * 类过滤器 *。

oewdyzsn

oewdyzsn5#

是的,有。你需要在IntelliJ IDEA的断点对话框中定义一个异常断点(它可以是“任何异常”)。
如果需要,可以按条件或类过滤异常,也可以按您对捕获的或未捕获的异常感兴趣来过滤异常。

6mzjoqzu

6mzjoqzu6#

如果你点击左上角的小“+”号,你可以添加一个新的断点;如果你选择了异常断点,你会看到一个小对话框,你可以在其中输入要中断的异常类(如果你不想中断所有的异常)。

相关问题