IntelliJ IDEA:如何创建一个在所有异常*上停止的异常断点*除了*ClassNotFoundException?

Dan*_*dei 31 java debugging exception-handling intellij-idea

我想在调试器中运行我的测试套件并打破任何意外的异常,但Java类加载器在正常操作期间会抛出大量的ClassNotFoundExceptions.

因此,如果我可以创建一个忽略ClassNotFoundExceptions并在其他所有内容上停止的异常断点,那就太好了.

小智 49

这个答案几乎与Mindas的答案相同,但细节足以让我第一次忽略他的建议,并打扰Intellij支持男/女(感谢Serge和Eugene):

  • 打开"Breakpoints"窗​​口并转到"Exception Breakpoints"选项卡
  • 突出显示并激活"任何异常"断点
  • 仅激活"条件"条件并键入以下内容:

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

IDEA将立即删除'java.lang'(版本11.01),但此解决方案需要它才能工作.如果你不使用它,你将得到一个ClassNotFound弹出框(讽刺哦讽刺).

我确实发现许多"标准"库在其正常的操作流程中抛出异常.当您成功忽略ClassNotFoundException时,您会发现其他人突然出现.没有比这更容易了.

  • 显然,“这”是关键!在测试时,IDEA 没有删除“java.lang”位,但它确实在表达式下放置了红色波浪线,并警告我“this”无法转换为 ClassNotFoundException。我只是忽略了它,它运行得很好。 (2认同)

ada*_*vea 5

出于某种原因,当我将 !ClassNotFoundException 条件置于“任何异常”断点规则下时,我一直“无法评估断点表达式”。不过,我能够通过创建自定义的“任何异常”断点项来解决它:

  1. 从调试视图打开断点窗口。
  2. 取消选中“任何异常”,这样我们就不会使用默认项在任何异常处停止。
  3. 点击+号,点击java异常断点,勾选“包含非项目类”,在框中输入“java.lang.Exception”,选择框中显示的结果。
  4. 选择列表中生成的异常项(在“任何异常”下),然后放入

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

    在条件框中。