Android Studio IDE: 异常中断

似乎我的 Android 工作室不希望在默认情况下中断任何异常。对“ AnyException”启用中断将在实际的 JDE 库中开始中断。有没有办法只在我的代码中的异常时才强制它中断?

来自 VisualStudio 环境,在这里寻找默认的 VS 调试行为。

51533 次浏览

如果打开“断点”窗口,则可以选择是否有条件地中断该窗口。您在这里寻找的是“类过滤器”——您可以指定一个通配符表达式,例如,一个 Java 包路径,它只会在匹配类生成的异常时中断。

打破所有例外,抓住或不抓住:

  1. 通过 运行-> 查看断点打开“断点”窗口。
  2. 出现断点对话框。在左窗格中,滚动到底部。在 Java 异常断点下选择 任何例外
  3. 选择 任何例外后,在右窗格中配置如下:
    • 暂停: 检查完毕
    • 全部: 选定
    • 条件: !(this instanceof java.lang.ClassNotFoundException)
    • 通知: 有例外未捕获的例外都被选中

Breakpoints dialog

  1. 定义指定调试器 应该中断的库的命名空间的筛选器: 选中 类过滤器复选框以启用类筛选(正如@Scott Barta 所提到的)。然后单击 ...(省略号)按钮打开类过滤器对话框。通过单击 < img src = “ https://i.stack.imgur.com/svO1i.png”alt = “ Add Pattern”> (Add Pattern)按钮指定类名称空间模式。输入:
    • com.myapp.*(将其替换为应用程序的名称空间前缀)
    • java.*(注意: 根据 OP 的问题,不要在 Java 库中断开)
    • android.*(如上所述,只调试自己的应用程序代码)
    • 根据需要添加任何额外的名称空间(例如第三方库)

Class Filters

  1. 好的,然后关闭断点对话框。

如果未捕获,则中断代码中的所有异常和其他异常:

此方法过滤出运行库在正常操作期间引发的异常类型(不是非常异常,是吗?).它不使用类过滤器,因为它会过滤掉太多; 代码中的错误经常导致运行时类抛出异常(例如访问数组列表超过末尾)。

  1. 仅为 没被抓到异常启用 断点/任何异常

  2. 抓到了也没抓到异常的 Exception (java.lang)类添加一个新的 Java 异常断点。启用 环境状况并将其设置为:

        !(this instanceof java.lang.ClassNotFoundException || this instanceof android.system.ErrnoException || this instanceof java.io.FileNotFoundException || this instanceof javax.net.ssl.SSLHandshakeException || this instanceof javax.net.ssl.SSLPeerUnverifiedException || this instanceof android.system.GaiException || this instanceof java.net.SocketTimeoutException || this instanceof java.net.SocketException || this instanceof java.security.NoSuchAlgorithmException)
    

Add to the exclusion list in the condition any other non-exceptional exceptions you encounter. (BTW, using java.lang.Exception is a way of effectively getting a second "Any exception" entry.)