019 例外と例外処理(複数の例外の処理) 011 解答例

import java.util.InputMismatchException;
import java.util.Scanner;

public class DivisionProgram {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        try {
            // ユーザーに2つの整数を入力してもらう
            System.out.print("最初の整数を入力してください: ");
            int num1 = scanner.nextInt();

            System.out.print("次の整数を入力してください: ");
            int num2 = scanner.nextInt();

            // 0で割り算をしようとした場合の例外処理
            if (num2 == 0) {
                throw new ArithmeticException("エラー: 0で割り算はできません。");
            }

            // 除算の結果を表示
            double result = (double) num1 / num2;
            System.out.println("除算の結果: " + result);

        } catch (InputMismatchException e) {
            // 整数以外の入力があった場合の例外処理
            System.out.println("エラー: 整数以外の入力が検出されました。");

        } catch (ArithmeticException e) {
            // 0で割り算した場合の例外処理
            System.out.println(e.getMessage());

        } finally {
            // Scannerのクローズ
            scanner.close();
        }
    }
}

このプログラムでは、nextInt() メソッドを使用して整数を入力し、ArithmeticExceptionInputMismatchException に対する例外処理を行っています。ユーザーが0で割り算をしようとするか、整数以外の入力をすると、それぞれの例外がキャッチされてエラーメッセージが表示されます。

複数の例外の処理

プログラム概要

このプログラムは、ユーザーに2つの整数を入力してもらい、それらの整数を除算して結果を表示します。ただし、以下の状況を考慮しています。

  1. ユーザーが0で割り算をしようとした場合は、ArithmeticException をスローし、エラーメッセージを表示してプログラムを終了します。
  2. ユーザーが整数以外の入力をした場合は、InputMismatchException をスローし、エラーメッセージを表示してプログラムを終了します。

プログラムのポイント

  1. try ブロック:
    • ユーザーからの入力や計算など、例外が発生する可能性があるコードを try ブロック内に配置します。
  2. catch ブロック:
    • 各種例外に対する処理を catch ブロックに記述します。
    • 最初に InputMismatchException に対する catch ブロックがあり、整数以外の入力が検出された場合にエラーメッセージを表示します。
    • 次に ArithmeticException に対する catch ブロックがあり、0で割り算が検出された場合にエラーメッセージを表示します。
  3. finally ブロック:
    • finally ブロックでは、クリーンアップのための処理を記述します。
    • このプログラムでは、Scanner をクローズする処理が finally ブロックに配置されています。これにより、プログラムの実行が終了してもリソースが適切に解放されます。
  4. throw 文:
    • 特定の条件が満たされた場合に、意図的に例外をスローするために throw 文が使用されています。
    • 例えば、0で割り算しようとした場合に ArithmeticException をスローします。

エラー処理の重要性

エラー処理は、プログラムの信頼性と安定性を向上させるために非常に重要です。適切なエラーメッセージを表示し、ユーザーに明確な情報を提供することで、問題が発生した場合でもプログラムを適切に終了させることができます。例外処理を通じて、プログラムが異常な状態に遭遇した場合にきちんと対処できるようにしましょう。

「019 例外と例外処理」問題集リスト