例外修羅道 Step01:ゼロ除算を捕まえろ

0004_例外修羅道-step01 learn

まずは問題を見ろ

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.
// 異常を制御せよ。それがプロの最初の一歩や。

例外修羅道:全体のステップ構成はこちら