IntelliJ IDEA 2026.1 Help

プログラムの実行フローを変更する

アプリケーションをデバッグする際は、通常、プログラムの通常のフローに従います。 ただし、通常のフローから逸脱する必要がある場合もあります。

これは、特定の条件を再現したり、プログラムが null や例外などの特殊なケースをどのように処理するかをテストしたりするために必要になることがあります。 また、現在調査している問題に関係のないプログラムの特定の部分をスキップする必要がある場合にも便利です。

前のスタックフレームに戻る

IntelliJ IDEA を使用すると、プログラムの実行フローで前のスタックフレームに戻ることができます。 これは、たとえば、誤ってステップを踏みすぎてしまい、重要な箇所を見逃したメソッドに再度入りたい場合などに便利です。

  • スレッド タブで、リセットするフレームにマウスを移動し、表示される フレームのリセット ボタンをクリックします。

    スレッドタブのフレームリセットボタン

ブレークポイント式を使用する

プログラムの流れを変更するには、ヒット時に 式を評価する 非中断ブレークポイントを使用します。 これは、たとえばデバッグ中に変数を自動的に変更したい場合などに便利です。

public class Demo { private static boolean readyToExit = false; private void printHello() { System.out.println("Hello"); readyToExit = true; } public static void main(String[] args) { Demo d = new Demo(); d.printHello(); // evaluate 'readyToExit = false' here if (!readyToExit) main(null); } }

この例では、 readyToExitfalse にリセットすると、 printHello メソッドがリセットされるブレークポイントを無効にするまで何度も実行されます。

また、デバッグ時にのみ使用するロジックを追加するために、ブレークポイント式を利用できます。

public class Demo { private static boolean addDebugLogic; public static void main(String[] args) { System.out.println("Hello"); if (addDebugLogic) new Debug().doSomething(); } } class Debug { void doSomething() { // code goes here } }

上記の例では、ブレークポイントを使用して addDebugLogic フラグの値を変更し、必要なデバッグ固有の動作を追加することができます。

式を使用して非中断ブレークポイントを追加する

  1. プログラムの状態を変更する行の ブレークポイントを追加します

  2. ブレークポイントのプロパティに移動します

  3. 新しいブレークポイントのプロパティで、 中断 チェックボックスをオフにし、 評価して記録 フィールドにプログラムの状態を変更する式を入力します。

現在のメソッドからの強制的な復帰

返却 ステートメントに到達する前にメソッドを終了し、任意の値を返すようにすることができます。 これは、問題がメソッドの戻り値に関係し、生成方法に関係しない場合に役立ちます。 強制リターン は、これらの値につながる条件を再現することなく、プログラムによって戻り値がどのように処理されるかをテストできます。

強制リターン を使用すると、現在の実行ポイントの後の命令は無視されます。

  1. 現在のメソッドが フレーム タブで選択されていることを確認し、タブ内の任意の場所を右クリックして、 強制リターン を選択します。

    強制的に戻るメニュー項目
  2. メソッドが値を返す場合(戻り値の型は void ではありません)、値またはそれを計算する式を指定します。

    戻り値ダイアログ

    式はローカルコンテキストで評価され、すでに宣言されている任意のローカル変数を使用できます。 戻り値は、メソッドの戻り値型に準拠する必要があります。

  3. 実行ポイントが現在 trycatchfinally ブロックにあり、 finally に実行されていないコード行がある場合は、スキップするかどうかを選択します。

    最後にコードを実行するかどうかを確認するダイアログ

例外をスローする

IntelliJ IDEA を使用すると、現在実行中のメソッドから例外またはエラーをスローできます。 これは、原因を再現したりコードを変更したりせずに、特定の種類の例外がどのように処理されるかをテストする場合に便利です。

  1. 現在のメソッドを フレーム タブで選択し、タブ内の任意の場所を右クリックして、 例外スロー を選択します。

    例外メニュー項目を投げる
  2. 例外を作成します (これは、 エラー やメソッドによって処理されないチェック例外を含む任意の Throwable になります)。 式では スロー キーワードを使用しないでください (例: new NullPointerException()

    スロー対象の例外ダイアログ

    )。

修正されたクラスを再ロードする

コードに変更を加える場合、プロセスをシャットダウンせずに実行時にどのように動作するかをすぐに確認したい場合があります。 ホットスワップメカニズムを使用すると、デバッグセッション中に変更されたクラスを再ロードすることで、これが可能になります。

変更されたすべてのファイルを再読み込み

  • エディター内で右クリックし、 変更されたファイルをコンパイルして再ロードする を選択します。

  • コードが変更されました ポップアップで ホットスワップの適用 をクリックします。 デバッグ中にコードを変更した後に表示されます。

    エディター内のコード変更ポップアップ

設定 | ビルド、実行、デプロイ | デバッガー | ホットスワップクラスをリロードする前にプロジェクトをビルドする オプションが有効になっている場合は、再コンパイルが自動的に行われます。 そうでない場合は、再ロードする前にファイルを再コンパイルする必要があります (ビルド | 再コンパイル Ctrl+Shift+F9)。

再コンパイルの範囲はビルドツールによって異なります。 例:Gradle と Maven はモジュール全体を再コンパイルしますが、IntelliJ IDEA のビルドシステムは変更されたファイルのみを再コンパイルします。

変更されたファイルを 1 つだけ再読み込みする

  1. Ctrl+Shift+A を押す。

  2. 開いた どこでも検索ダイアログで、 Compile And Reload File と入力し、対応するアクションを選択して、 Enter を押します。

設定 | ビルド、実行、デプロイ | デバッガー | ホットスワップコンパイル後のクラスリロード オプションを使用して、クラスが再コンパイルされた後に、クラスの自動再ロードを設定できます。 自動再ロードをオン / オフにしたり、特定のケースごとにファイルを再ロードするかどうかを確認するようにデバッガーを設定したりできます。

HotSwap の制限

VM の設計により、HotSwap には次の制限があります。

  • メソッド本体が変更された場合のみ利用可能です。 シグネチャーの変更はサポートされていません。

  • クラスメンバーの追加と削除はサポートされていません

  • 変更されたメソッドがすでにコールスタック内にある場合、変更はプログラムが変更されたメソッドを終了した後にのみ有効になります。 その瞬間まで、メソッド本体は変更されません。 この場合、フレームは 廃止 として表示されます。

標準 VM によって課せられた制限を削除する場合は、実行時のクラスの再ロードを無制限にサポートする Dynamic Code Evolution VM を使用できます。

2026 年 3 月 30 日