【プログラミングしてみよう11】Javaの例外処理(try-catch)でエラーに備える

Java

前回はArrayListを使って柔軟にデータを扱う方法を学びました。 今回は、プログラム実行中に起きる想定外のエラーに対応するための「例外処理(try-catch)」について解説します。 例外処理を使うことで、エラーが起きてもプログラムが突然落ちることなく、安全に動作を続けられるようになります。

例外処理の基本

これまで作ってきたプログラムでも、たとえば数値を入力するべき場面で文字を入力したり、配列の存在しないインデックスにアクセスしたりすると、プログラムがエラーを起こして強制終了してしまいます。こうした実行時のエラーのことをJavaでは「例外(Exception)」と呼びます。

例外が発生する可能性のある処理を try ブロックに書き、例外が発生したときの対応を catch ブロックに書いておくことで、エラーが起きてもプログラムを止めずに処理を続けることができます。

try {
    // 例外が発生する可能性のある処理
} catch (例外の型 変数名) {
    // 例外が発生したときの処理
}

サンプルコード(try-catch)

ファイル作成

「Java02」フォルダに TryCatchTest.java という名前でファイルを作成します

コード入力

以下のコードを入力します。

import java.util.Scanner;

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

        System.out.print("割られる数を入力してください:");
        int a = sc.nextInt();

        System.out.print("割る数を入力してください:");
        int b = sc.nextInt();

        try {
            int result = a / b;
            System.out.println(a + " ÷ " + b + " = " + result);
        } catch (ArithmeticException e) {
            System.out.println("エラー:0で割ることはできません");
        }

        System.out.println("プログラムを終了します");
        sc.close();
    }
}

コンパイル

javac TryCatchTest.java

実行

java TryCatchTest

次にターミナルに数字を入力します。

割られる数を入力してください:10
割る数を入力してください:0

実行結果は次のようになります。

エラー:0で割ることはできません
プログラムを終了します

コードの解説

int result = a / b; の部分は、b が0だった場合に「ゼロ除算」という例外が発生する可能性があります。通常であれば、ここでプログラムはエラーメッセージとともに強制終了してしまいます。

しかし、この処理を try ブロックの中に書いておくことで、例外が発生した際に処理が catch ブロックに移り、System.out.println("エラー:0で割ることはできません"); が実行されます。catch (ArithmeticException e)ArithmeticException は、ゼロ除算のような算術エラーを表す例外の型です。

注目してほしいのは、catch ブロックでエラーを処理した後も、System.out.println("プログラムを終了します"); がきちんと実行されている点です。try-catch を使わなかった場合、ゼロ除算が起きた時点でプログラムは強制終了し、この行は実行されません。例外処理を使うことで、エラーが起きてもプログラム全体を安全に最後まで動かすことができます。

例外にはいくつかの種類があり、状況によって発生するものが異なります。代表的なものに、配列の存在しないインデックスにアクセスしたときに発生する ArrayIndexOutOfBoundsException や、数値であるべき箇所に文字列が入力されたときに発生する InputMismatchException などがあります。複数の種類の例外に対応したい場合は、catch ブロックを複数並べて書くこともできます。

try {
    // 処理
} catch (ArithmeticException e) {
    System.out.println("計算に関するエラーです");
} catch (ArrayIndexOutOfBoundsException e) {
    System.out.println("配列の範囲外エラーです");
}

このように、起こりうる例外の種類ごとに異なる対応を用意しておくことができます。

まとめ

例外処理を使うことで、プログラム実行中に予期せぬエラーが起きても、強制終了させずに適切な対応をしたうえで処理を続けることができます。try ブロックにエラーが起きるかもしれない処理を、catch ブロックにエラー発生時の対応を書くという基本の形を覚えておきましょう。ユーザーからの入力を扱うプログラムでは、入力ミスや想定外の値がつきものです。例外処理を取り入れることで、より安全で実用的なプログラムを作れるようになります。これでJavaの基礎的な文法を一通り学んだことになります。

2026/06/20(土) ぱんまる

コメント

タイトルとURLをコピーしました