まずは問題を見ろ
→ javadrill.tech で出題された問題を見る(Step01)
問題のポイント
a / b
を実行するとき、b
が0だとArithmeticException
が発生する。- それを
try-catch
で捕まえて、プログラムが止まらないように処理する。 - catch した後、例外の内容に応じた意味のあるメッセージを出せているか?
- 単に動くかどうかじゃない。**例外処理が「構造として機能してるか」**を見ろ。
まず、日本語で考えろ
2つの数が与えられる。割り算する。
でも、割る数(b)が0だったらどうなる? 止まる。クラッシュする。
それを「捕まえて」「止めずに」「メッセージを出す」──それが今回のミッションや。
コメントを書け
// 2つの整数を引数に取り、割り算の結果を出力する
// bが0のときは、例外をcatchしてエラーメッセージを出力する
コメントに従ってコードを書け
public class ExceptionUtil {
public static void divide(int a, int b) {
try {
// 2つの整数を割り算し、結果を出力
int result = a / b;
System.out.println("計算結果: " + result);
} catch (ArithmeticException e) {
// ゼロ除算が発生した場合の処理
System.out.println("エラー: ゼロによる除算です");
}
}
}
実行結果の例
divide(10, 2); → 計算結果: 5
divide(10, 0); → エラー: ゼロによる除算です
divide(-6, 3); → 計算結果: -2
コードの解説
try
ブロック内でa / b
を実行。b
が0だったときにArithmeticException
が発生し、catch で受け止める。- 単に止めるんじゃない。どう止まったかをユーザーに伝える処理を書く。
- 今回の例では
"エラー: ゼロによる除算です"
と出力。 System.out.println
でエラーメッセージを出すことで、制御不能な例外を「設計された分岐」に変える。
つまづきやすいポイント
try-catch
を書いたのに例外が止まらない →catch
の型(例外クラス)が合ってないSystem.out.println("エラー")
だけ書いて安心する → 何が原因で止まったかを伝えろcatch
の中で再び例外を起こしてるケースもある(例:b = 0 でも結果出力しようとする)
// tesh:
// 「ゼロ除算ぐらい知ってるし」って言ったやつ、
// ほんまに 自分で書いて、落として、捕まえたか?
//
// try-catch は「お守り」じゃない。
// 構造や。
// 意味を持った分岐や。
//
// 「例外処理」は、逃げの道じゃなく、戦うための仕組みや。
// 止まるな。止めるな。受け止めて、続けろ。
//
// Just keep typing, baby.
// 異常を制御せよ。それがプロの最初の一歩や。