是否有在第一次出现异常时自动中断调试的功能?所以我们1.启动应用程序1.做一些抛出异常的事情1.发生异常的高亮行弹出IntelliJ。
aiazj4mn1#
跑|查看断点|异常断点
omjgkv6w2#
弹出该对话框的快捷方法是按Ctrl + Shift + F8(在Mac上:Cmd + SHIFT + F8),然后点击异常断点选项卡,如果这是你查看的最后一个选项卡,它仍然会被选中,这样就很容易打开和关闭异常断点。这将导致IntelliJ在代码(或库代码)中引发异常的位置处中断。具体来说,在遍历堆栈以查找要执行的catch/finally块之前,您获得了异常处理的"第一次机会"。提示:Java在加载类时倾向于在内部抛出大量异常,因此中断所有异常可能会变得相当乏味。好消息是您可以使用 * condition * 字段排除某些类型的异常。例如:
!(this instanceof java.lang.ClassNotFoundException)
可以将多个此类条件与&&链接在一起。
&&
sqougxex3#
在IntelliJ IDEA 14中,转到:Run -> View Breakpoints -> Check "Java Exceptions Breakpoints" -> Uncheck "Caught Exceptions"如果不取消选中Caught Exceptions,则每次Java Framework引发内部异常时,执行都会停止。
Run -> View Breakpoints -> Check "Java Exceptions Breakpoints" -> Uncheck "Caught Exceptions"
Caught Exceptions
Java Framework
56lgkhnf4#
在新版本的intellij中,它位于 * 运行 〉 查看断点 * 下。然后您可以选中 Java异常断点 * -〉 任何异常 *。调试异常的一个好方法是使用主应用包和通配符.*,这样就可以跳过所有其他库异常,因为大多数时候您查找的是应用抛出的异常,而不是其他库抛出的异常(可能有很多异常)。如图所示,我使用com.gs.mercury.*在每次应用抛出异常时中断。如果你使用异常的目的是为了处理异常情况,而不是处理正常情况的流程,那么你几乎总是在到达所需的异常时才会停止。您可以使用 Catch class filters 来指定您希望捕获的异常的类,使用 Class filters 来指定您希望在哪些类中捕获异常。注:在注解中添加了@Roman对 *Catch类过滤器 * 和 *Class过滤器 * 之间的说明。回答只是为了指出非常有用的 * 捕获类过滤器 * 和 * 类过滤器 *。
.*
com.gs.mercury.*
oewdyzsn5#
是的,有。你需要在IntelliJ IDEA的断点对话框中定义一个异常断点(它可以是“任何异常”)。如果需要,可以按条件或类过滤异常,也可以按您对捕获的或未捕获的异常感兴趣来过滤异常。
6mzjoqzu6#
如果你点击左上角的小“+”号,你可以添加一个新的断点;如果你选择了异常断点,你会看到一个小对话框,你可以在其中输入要中断的异常类(如果你不想中断所有的异常)。
6条答案
按热度按时间aiazj4mn1#
跑|查看断点|异常断点
omjgkv6w2#
弹出该对话框的快捷方法是按Ctrl + Shift + F8(在Mac上:Cmd + SHIFT + F8),然后点击异常断点选项卡,如果这是你查看的最后一个选项卡,它仍然会被选中,这样就很容易打开和关闭异常断点。
这将导致IntelliJ在代码(或库代码)中引发异常的位置处中断。具体来说,在遍历堆栈以查找要执行的catch/finally块之前,您获得了异常处理的"第一次机会"。
提示:Java在加载类时倾向于在内部抛出大量异常,因此中断所有异常可能会变得相当乏味。好消息是您可以使用 * condition * 字段排除某些类型的异常。
例如:
可以将多个此类条件与
&&
链接在一起。sqougxex3#
在IntelliJ IDEA 14中,转到:
Run -> View Breakpoints -> Check "Java Exceptions Breakpoints" -> Uncheck "Caught Exceptions"
如果不取消选中
Caught Exceptions
,则每次Java Framework
引发内部异常时,执行都会停止。56lgkhnf4#
在新版本的intellij中,它位于 * 运行 〉 查看断点 * 下。
然后您可以选中 Java异常断点 * -〉 任何异常 *。
调试异常的一个好方法是使用主应用包和通配符
.*
,这样就可以跳过所有其他库异常,因为大多数时候您查找的是应用抛出的异常,而不是其他库抛出的异常(可能有很多异常)。如图所示,我使用
com.gs.mercury.*
在每次应用抛出异常时中断。如果你使用异常的目的是为了处理异常情况,而不是处理正常情况的流程,那么你几乎总是在到达所需的异常时才会停止。您可以使用 Catch class filters 来指定您希望捕获的异常的类,使用 Class filters 来指定您希望在哪些类中捕获异常。
注:在注解中添加了@Roman对 *Catch类过滤器 * 和 *Class过滤器 * 之间的说明。
回答只是为了指出非常有用的 * 捕获类过滤器 * 和 * 类过滤器 *。
oewdyzsn5#
是的,有。你需要在IntelliJ IDEA的断点对话框中定义一个异常断点(它可以是“任何异常”)。
如果需要,可以按条件或类过滤异常,也可以按您对捕获的或未捕获的异常感兴趣来过滤异常。
6mzjoqzu6#
如果你点击左上角的小“+”号,你可以添加一个新的断点;如果你选择了异常断点,你会看到一个小对话框,你可以在其中输入要中断的异常类(如果你不想中断所有的异常)。