CodeGym /コース /JAVA 25 SELF /try-catch の構文

try-catch の構文

JAVA 25 SELF
レベル 11 , レッスン 2
使用可能

1. なぜ try-catch が必要か?

ご存じのとおり、プログラミングではエラーは頻繁に起こります。ゼロ除算、不正な入力、ファイルの不在などです。こうした状況を処理しないと、プログラムはエラーで(異常)終了します。
構文 try-catch は例外を「捕まえて」プログラムのクラッシュを防ぎ、エラーを丁寧に処理できます。

try-catch 構文のシンタックス

try 
{
    // 例外をスローする可能性のあるコード
} 
catch (TipIsklyucheniya imyaPeremennoy) 
{
    // 例外を処理するコード
}

説明:

  • try — 「このコードの実行を試みる」。
  • catch — 「指定の型の例外が発生したら、ここで処理する」。

どのように動作するか?

try ブロック内で例外が発生すると、そのブロックの実行は直ちに中断され、最初に一致する catch ブロックに制御が移ります。例外が発生しなければ、catch ブロックはスキップされます。

2. 例: ゼロによる除算

例外処理なし

int a = 10;
int b = 0;
int result = a / b; // ここでプログラムはエラー終了!
System.out.println("結果: " + result); // ここには到達しない

結果:

Exception in thread "main" java.lang.ArithmeticException: / by zero
    at Main.main(Main.java:3)

try-catch で処理する場合

int a = 10;
int b = 0;

try 
{
    int result = a / b; // ここで例外が発生する可能性がある
    System.out.println("結果: " + result);
} 
catch (ArithmeticException e) 
{
    System.out.println("エラー: 0 で割ることはできません!");
}

System.out.println("プログラムは処理を続行しました。");

結果:

エラー: 0 で割ることはできません!
プログラムは処理を続行しました。

説明:

  1. Java がゼロ除算に出会うと、ただちに例外を「スロー」します。
  2. try は中断され、制御は catch に移ります.
  3. エラーを処理した後、プログラムは実行を続けます。

3. catch ブロックはどう動くか

catch の後ろの括弧には、例外の型(例: ArithmeticException)と変数名(一般に e)を指定します。

catch ブロックの内部では、エラーの詳細を知ることができます:

  • e.getMessage() — エラーの短い説明。
  • e.printStackTrace() — 詳細情報(デバッグ用)。

例:

try 
{
    int[] arr = new int[2];
    int x = arr[10]; // エラー: そのインデックスは存在しない
} 
catch (ArrayIndexOutOfBoundsException e) 
{
    System.out.println("エラー: " + e.getMessage()); // エラーメッセージを出力
    e.printStackTrace();                             // エラーの詳細をコンソールに出力
}

4. 例外発生時の実行フロー

try ブロックにエラーがない場合、catch ブロックはスキップされます。

try ブロックでエラーが発生した場合、エラーの箇所で実行が中断され、ただちに最初に一致する catch に制御が移ります。エラー以降の try 内の処理は実行されません!

例:

try 
{
    System.out.println("1. try の開始");
    int a = 10 / 0;                        // エラー!
    System.out.println("2. 割り算の後");    // 実行されない
} 
catch (ArithmeticException e) 
{
    System.out.println("3. catch ブロック内");
}
System.out.println("4. try-catch の後");

結果:

1. try の開始
3. catch ブロック内
4. try-catch の後

5. try-catch の使い方でよくあるミス

誤り № 1: catch が広すぎる。
catch (Exception e) を使うと、適切に処理できない多数の予期しないエラーまで捕捉してしまいます。
解決策: その場で現実的に想定される例外だけを捕捉する(例: IOExceptionSQLException)。

誤り № 2: 空の catch
catch (Exception e) {} と書くのは問題を隠すことです。プログラムは別の場所で落ちるか、奇妙な挙動になります。
解決策: 少なくともエラーをログに残す(e.printStackTrace() またはロガー)。

誤り № 3: try-catch でどんな問題でも直せると信じること。
プログラムのロジックの誤り(例: ゼロ除算、誤ったアルゴリズム)の場合、どんな try-catch でも助けにはなりません。
解決策: try-catch は本当に想定される状況にのみ使い、バグの隠蔽には使わない。

1
タスク
JAVA 25 SELF, レベル 11, レッスン 2
ロック未解除
信頼性の高い探査ロボット 🤖
信頼性の高い探査ロボット 🤖
1
タスク
JAVA 25 SELF, レベル 11, レッスン 2
ロック未解除
ヒーローのインベントリへの不正なアクセス 🛡️
ヒーローのインベントリへの不正なアクセス 🛡️
1
タスク
JAVA 25 SELF, レベル 11, レッスン 2
ロック未解除
集計システムの問題の診断 📈
集計システムの問題の診断 📈
1
タスク
JAVA 25 SELF, レベル 11, レッスン 2
ロック未解除
クリティカルミッション管理システム 🚀
クリティカルミッション管理システム 🚀
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION