IntelliJに「Break on Exception」はありますか?


318

最初の例外発生時にデバッグを自動的に中断する機能はありますか?

だから私たちは

  1. アプリケーションを開始
  2. 例外を投げる何かをする
  3. 例外が発生したIntelliJが強調表示された行をポップアップしました。

おそらく、キャッチされなかった例外のみを解除したいのでしょう。
David FerenczyRogožan19年

回答:



158

ダイアログをすばやく表示するには、Ctrl+ SHIFT+ F8(Macの場合:Cmd+ SHIFT+ F8)を押してから、クリックして[例外ブレークポイント]タブに移動します。それが最後に表示したタブだった場合でも、そのタブが選択されているため、例外のオンとオフを簡単に切り替えることができます。

これにより、IntelliJは、例外が発生したコード(またはライブラリコード)のポイントで中断します。具体的には、スタックが実行されるcatch / finallyブロックを探す前に、例外処理で「最初のチャンス」を得ます。


ヒント:Javaは、クラスをロードするときに内部で多くの例外をスローする傾向があるため、すべての例外の解除は非常に退屈な作業になる可能性があります。良い点は、条件フィールドを使用して特定のタイプの例外を除外できることです。

例えば:

!(this instanceof java.lang.ClassNotFoundException)

を使用して、そのような複数の条件を連鎖させることができ&&ます。

ここに画像の説明を入力してください


9
「プロジェクトからの例外(Javaシステムからではなく)で中断する」を伝える方法はありますか?
くそー野菜

16
「選択したブレークポイントに到達するまで無効:」を忘れないでください-これは素晴らしいです。すべてのJavaまたは他のライブラリーがロードされてセットアップされた後で、コードにブレークポイントを設定するだけです。次に、ドロップダウンからブレークポイントを選択して待機します。ブレークポイントがヒットし、continueをヒットすると、新しいCaught&Uncaught Exceptionフィルターが起動します。:)
Louis St-Amour

1
[Breakpoints]ダイアログボックスの下部にある[Caught exception]と[Uncaught exception]の両方をチェックすることを忘れないでください。
Robino 2017

59

IntelliJ IDEA 14は、に行きます:

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

チェックを外さないCaught ExceptionsJava Framework、内部例外がスローされるたびに実行が停止します。


1
実行->ブレークポイントの表示...->「Java例外ブレークポイント」をチェック->「キャッチされた例外」のチェックを外す
Jonas

2
残念ながら、これは、「キャッチされた例外」を無効にした後でも、まだキャッチされた例外に違反しています。
2016年

これは私が言う非常に重要な情報ですが、そうでなければ、情報の価値がない例外的な地獄です。主に、Grailsのような大きなフレームワークを使用する場合。
David FerenczyRogožan19年

OK、私は気が変わった-キャッチされた例外がある場合とない場合の両方のオプションは悪いです。通常、典型的なWebアプリケーションでは、すべての例外がキャッチされるために使用されるため、すべてをキャッチしてそれをフォーマットするトップレベルのcatchブロックがありますユーザーに提示されます。したがって、キャッチされた例外がなければ、何も中断せず、1つのリクエストで何百回も中断します。どちらも役に立たない:(
David FerenczyRogožan19年

あなたがそれを使用する方法を知っていれば、何も役に立たない。
Alessandro Flati

12

はいあります。IntelliJ IDEAのブレークポイントダイアログで、例外ブレークポイント(「すべての例外」にすることができます)を定義する必要があります。

例外は、必要に応じて条件またはクラス、またはキャッチした例外とキャッチしていない例外のどちらに関心があるかによってフィルタリングできます。


7

左上隅にある小さな「+」記号をクリックすると、新しいブレークポイントを追加できます。Exception Breakpointを選択すると、小さなダイアログが表示され、そこで例外クラスを入力して中断できます(すべての例外で中断したくない場合)。


0

[ 実行] > [ブレークポイントの表示]にあるintellijの新しいバージョン。

次に、Java Exception Breakpoints- > Any Exceptionを確認します

例外をデバッグする良い方法は、メインアプリパッケージとワイルドカードを使用することです.*。ほとんどの場合、他のライブラリではなく、アプリによってスローされた例外を探しているため、他のすべてのライブラリ例外をスキップします(多くの例外になる可能性があります)。

画像に示されている例として、com.gs.mercury.*アプリが例外をスローするたびに中断するために使用しています。例外を使用する場合(例外的なケースを処理し、通常の状況のフローを処理しないため)、目的の例外にほぼ常に到達したときにのみ停止します。

PD。かなり便利なCatchクラスフィルターを指摘するためだけに回答を追加しました。

ブレークポイント

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.