Javaのtry-catchとは?例外が起きたときの処理の流れを理解する

Schoo Java入門 初級 第9回 例外処理

本記事は、Schooの「Java入門 初級【2026年版】」第9回「例外処理」を学ぶ前後に、try-catch の処理の流れを整理したい方向けの記事です。

try-catch は、例外が起きそうな処理を試し、問題が起きたときだけ別の処理へ移すための書き方です。初学者がつまずきやすいのは、文法そのものよりも「どの行まで実行されて、どこから続くのか」という流れです。

この記事では、try の中で例外が起きたあと、catch に移り、その後の処理へ進むイメージを確認します。

Schoo コースページ:Java入門 初級【2026年版】

try-catchは何のために使うのか

try-catch は、例外が起きたときの対応をプログラムに書いておくために使います。

  • try:例外が起きるかもしれない処理を書く
  • catch:例外が起きたときの処理を書く
  • try-catch の後ろ:例外対応が終わったあとに続けたい処理を書く

重要なのは、catch は「毎回実行される処理」ではないことです。try の中で対応する例外が起きた場合だけ、catch の中が実行されます。

図解:try-catchで処理の流れが分かれる
プログラムの流れ
1. tryの前の処理を実行する
2. tryの中を上から順番に実行する
例外が起きない
tryの残りを実行して、catchは通らない
例外が起きる
tryの残りは飛ばして、対応するcatchへ移る
3. try-catchの後ろの処理へ進む
例外が起きると、tryの中を最後まで進むのではなく、対応するcatchへ流れが切り替わります。

例外が起きない場合の流れ

まず、例外が起きない場合を見ます。10 / 2 は計算できるため、try の中を最後まで実行します。

try {
    int result = 10 / 2;
    System.out.println("結果:" + result);
} catch (ArithmeticException e) {
    System.out.println("0で割ることはできません");
}

System.out.println("処理を続けます");

この場合、catch の中は実行されません。表示される流れは、結果を表示してから、処理を続けます に進みます。

例外が起きた場合の流れ

次に、例外が起きる場合を見ます。10 / 0 は計算できないため、ArithmeticException が発生します。

try {
    int result = 10 / 0;
    System.out.println("結果:" + result);
} catch (ArithmeticException e) {
    System.out.println("0で割ることはできません");
}

System.out.println("処理を続けます");

このコードでは、int result = 10 / 0; の行で例外が起きます。そのため、同じ try の中にある System.out.println("結果:" + result); は実行されません。

代わりに、対応する catch へ移り、0で割ることはできません と表示します。その後、try-catch の外にある 処理を続けます に進みます。

図解:例外が起きた行からcatchへ移る
try {
    int result = 10 / 0;
    // ここで例外が起きる
    System.out.println(result);
    // この行は実行されない
} catch (ArithmeticException e) {
    System.out.println("0で割れません");
}

System.out.println("処理を続けます");
tryの中
例外が起きた行で止まる
catchの中
代わりの処理を実行する
その後
try-catchの後ろへ進む
tryの中で例外が起きたあとは、同じtryの残りの行には戻りません。

catchに書く例外の型を合わせる

catch には、受け取りたい例外の型を書きます。0で割ったときに発生する例外は ArithmeticException なので、次のように書きます。

catch (ArithmeticException e) {
    System.out.println("0で割ることはできません");
}

e は、発生した例外の情報を受け取る変数です。最初のうちは、catch (例外の型 変数名) という形で、例外を受け取っていると考えれば十分です。

tryの中に何でも詰め込みすぎない

try の中には、例外が起きるかもしれない処理と、その結果に直接関係する処理を入れます。関係のない処理まで入れすぎると、どの処理で例外が起きたのか追いにくくなります。

たとえば、計算で例外が起きるかもしれないなら、計算と結果表示を try に入れます。計算のあとに必ず続けたい処理は、try-catch の外に書くと流れを読みやすくなります。

確認問題

  1. try の中で例外が起きた場合、同じ try の残りの行は実行されますか。
  2. catch の中は、どのような場合に実行されますか。
  3. try-catch の後ろに書いた処理は、どのタイミングで実行されますか。

演習後の確認:こちらのページを使って、自分で考えた内容を見直せます。

あわせて読みたい関連記事

まとめ

try-catch は、例外が起きたときに処理の流れを切り替えるための書き方です。例外が起きない場合は try の中を最後まで進み、catch は実行されません。例外が起きた場合は、try の残りを飛ばして対応する catch に移ります。まずは、この流れを図としてイメージできるようにしておきましょう。

info

シェアする