Android Studio IDE:打破异常

时间:2014-07-13 02:11:57

标签: debugging exception android-studio breakpoints

默认情况下,我的Android Studio似乎不希望破坏任何异常。启用中断"任何异常"开始打破实际的JDE库。有没有办法强制它只在我的代码中的异常中断?

来自Visual Studio Universe,在此处查找默认的VS调试行为。

3 个答案:

答案 0 :(得分:176)

打破所有被捕获或未捕获的异常:

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

    1. 定义指定调试器中断的库名称空间的过滤器:选中类过滤器复选框以启用类过滤(as mentioned by @Scott Barta)。然后单击 ... (省略号)按钮以打开“类过滤器”对话框。单击Add Pattern(添加模式)按钮指定类命名空间模式。输入:
      • com.myapp.*(将其替换为应用的名称空间前缀)
      • java.*(注意:根据OP的问题,请不要在Java库中中断)
      • android.*(如上所述,只需调试自己的应用代码)
      • 根据需要添加任何其他名称空间(例如第三方库)
    2. Class Filters

      1. 确定,然后关闭“断点”对话框。

答案 1 :(得分:33)

如果你打开Breakpoints窗口,它会为你提供很多选项让它有条件地破坏。您正在寻找的是"类过滤器"这里 - 您可以使用例如Java包路径指定通配符表达式,并且它只会因匹配类生成的异常而中断。

答案 2 :(得分:6)

打破代码中的所有异常以及未捕获的其他异常:

此方法过滤掉运行时在正常操作期间抛出的异常类型(不是非常特殊,是吗?)。它不使用类过滤器,因为它会过滤掉;代码中的错误通常会导致运行时类抛出异常(例如,在结束时访问数组列表)。

  1. 仅为未捕获例外启用 Java例外BreakPoints /任何例外

  2. 捕获和未捕获例外的Exception (java.lang)类添加新的 Java Exception BreakPoint 。启用条件并将其设置为:

        !(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)
    
  3. 在条件中添加您遇到的任何其他非例外例外的排除列表。 (顺便说一句,使用java.lang.Exception是一种有效获取第二个“任何例外”条目的方法。)