web-dev-qa-db-ja.com

Android St​​udio IDE:例外でブレーク

私のAndroid St​​udioはデフォルトで例外を発生させたくないようです。 「任意の例外」でブレークを有効にすると、実際のJDEライブラリ内でブレークが開始されます。私のコード内の例外でのみブレークするように強制する方法はありますか?

Visual Studioユニバースから来て、ここでデフォルトのVSデバッグ動作を探します。

117
AlexVPerl

キャッチまたはキャッチされていないすべての例外を解除するには:

  1. Run-> View BreakpointsでBreakpointsウィンドウを開きます。
  2. [ブレークポイント]ダイアログが表示されます。左ペインで、一番下までスクロールします。 Java Exception Breakpointsの下のAny exceptionを選択します
  3. 任意の例外を選択した状態で、右側のペインで次のように構成します:
    • 一時停止:チェック済み
    • すべて:選択
    • 条件:!(this instanceof Java.lang.ClassNotFoundException)
    • 通知:Caught exceptionおよびUncaught exception選択の両方

Breakpoints dialog

  1. デバッガーがライブラリの名前空間を指定するフィルターを定義しますshouldbreak ::Class filtersチェックボックスをオンにしてクラスフィルターを有効にします(--- @ Scott Bartaが述べたように )。次に、...(省略記号)ボタンをクリックして、[クラスフィルター]ダイアログを開きます。をクリックして、クラスの名前空間パターンを指定します Add Pattern (パターンの追加)ボタン。入る:
    • com.myapp.*(これをアプリの名前空間プレフィックスに置き換えます)
    • Java.*(注:OPの質問により、Javaライブラリで中断しないようにこれを省略してください)
    • Android.*(上記のように、独自のアプリコードをデバッグするために省略します)
    • 必要に応じて追加の名前空間を追加します(例:サードパーティライブラリ)

Class Filters

  1. OKを押して、[ブレークポイント]ダイアログを閉じます。
182
CJBS

[ブレークポイント]ウィンドウを開くと、条件付きでブレークするかどうかを選択できるオプションがかなりあります。ここで探しているのは「クラスフィルター」です。たとえば、Javaパッケージパスを使用してワイルドカード式を指定できます。一致するクラスから生成された例外に対してのみブレークします。

33
Scott Barta

キャッチされていない場合、コード内のすべての例外およびその他の例外を解除するには:

このメソッドは、通常の操作中にランタイムがスローする例外タイプを除外します(例外ではありませんか?)。クラスフィルターは使用しません。フィルターが多すぎるためです。コードのバグにより、ランタイムクラスが例外をスローすることがよくあります(例:末尾を超えて配列リストにアクセスする)。

  1. Java Exception BreakPoints/Any exceptionを有効にしますncaught例外のみ。

  2. caught and uncaught例外のException (Java.lang)クラスに新しいJava Exception BreakPointを追加します。 Conditionを有効にして、これに設定します。

        !(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)
    

発生した他の例外的でない例外を条件の除外リストに追加します。 (ところで、Java.lang.Exceptionを使用すると、2番目の「任意の例外」エントリを効果的に取得できます。)

6
Edward Brey