IntelliJ中是否有"Breaking on Exception"?

Mik*_*liy 304 debugging exception intellij-idea

是否有功能会在第一次发生异常时自动中断调试?

所以我们

  1. 开始申请
  2. 做一些抛出异常的事情
  3. IntelliJ弹出突出显示异常发生的行.

Mik*_*liy 351

运行| 查看断点| 异常断点


Dre*_*kes 150

弹出对话框的快捷方法是按Ctrl+ SHIFT+ F8(在Mac上:Cmd+ SHIFT+ F8),然后单击到异常断点选项卡.如果这是您正在查看的最后一个标签,它仍然会被选中,这样可以轻松地打开和关闭异常.

这将导致IntelliJ在引发异常的代码(或库代码)中断点.具体来说,在执行堆栈查找catch/finally块之前,您将获得异常处理的"第一次机会".


提示:Java在加载类时往往会在内部抛出大量异常,因此打破所有异常会变得相当繁琐.好消息是您可以使用条件字段排除某些类型的异常.

例如:

!(this instanceof java.lang.ClassNotFoundException)
Run Code Online (Sandbox Code Playgroud)

您可以将多个这样的条件链接在一起&&.

在此输入图像描述

  • 不要忘记"禁用,直到选定的断点被击中:" - 这个是惊人的.只需在加载和设置所有Java或其他库之后在*您的代码中设置断点.然后从下拉列表中选择断点并等待.您的断点将被击中,然后一旦您点击继续,您的新Caught&Uncaught Exception过滤器将会启动.:) (13认同)
  • 有没有办法告诉"我的项目中的异常(不是来自Java系统)"? (9认同)

Ton*_*tio 55

IntelliJ IDEA 14中,请访问:

Run -> View Breakpoints -> Check "Java Exceptions Breakpoints" -> Uncheck "Caught Exceptions"

如果不取消选中Caught Exceptions,则每次Java Framework抛出内部异常时都会停止执行.

  • 不幸的是,即使在禁用"捕获的异常"之后,这仍然可以解决我遇到的异常问题. (2认同)

Avi*_*Avi 12

就在这里.您需要在IntelliJ IDEA的断点对话框中定义异常断点(可以是"任何异常").

如果需要,可以通过条件或类过滤异常,或者您是否对捕获或未捕获的异常感兴趣.


kol*_*aTM 7

如果单击左上角的小"+"符号,则可以添加新断点.如果选择Exception Breakpoint,则会得到一个小对话框,您可以在其中输入要断开的异常类(如果您不想中断所有异常).


Jos*_*lva 7

在较新版本的 intellij 中,它位于Run > View Breakpoints 下

然后你可以检查Java Exception Breakpoints -> Any Exception

调试异常的一个好方法是使用您的主应用程序包和通配符.*。通过这种方式,您可以跳过所有其他库异常,因为大多数时候您正在寻找由您的应用程序而不是任何其他库(可能有很多异常)抛出的异常。

作为图像中显示的示例,我com.gs.mercury.*每次应用程序抛出异常时都会中断。如果您将异常用于它们的用途(处理异常情况而不是处理正常情况的流程),那么您只会在几乎所有时间都达到所需的异常时停止。

PD。添加的答案只是为了指出非常有用的Catch 类过滤器

断点