演習課題「例外の種類を変更しよう」
右のコードは、RPGの勇者の行動を3行表示します。
しかし、enemies配列の範囲外にアクセスするため例外が発生するのですが、捕捉する例外が異なるため、プログラムが強制終了してしまいます。
このプログラムにcatchブロックを追加して、配列の範囲外にアクセスした場合の例外を捕捉してください。追加したブロックでは、標準エラー出力に下記のメッセージを表示して下さい。
プログラムを実行して、想定どおり出力されれば演習課題クリアです!
期待する出力値
勇者は敵に遭遇した
勇者は勝利した
期待する標準エラー出力値
その敵は表示できません
#05:複数の例外を捕捉してみよう
ここでは、複数の種類の例外に対応する方法を学習します。ゼロ除算や数値変換などの複数の例外に対応できるよう、割り算プログラムを改良していきましょう。
// 例外処理 - 複数の例外を捕捉する
public class Main {
    public static void main(String[] args) {
        
        System.out.println("Hello World");
        try {
            // int number = Integer.parseInt("5");
            // int number = Integer.parseInt("a");
            int number = Integer.parseInt(args[0]);
            int answer = 100 / number;
            System.out.println(answer);
        } catch (NumberFormatException e) {
            System.err.println("文字列を数値に変換できません。");
            e.printStackTrace();
        } catch (ArithmeticException e) {
            System.err.println("0では、割り算できません。");
            e.printStackTrace();
        } catch (Exception e) {
            System.err.println("例外を捕捉しました。");
            e.printStackTrace();
        } finally {
            System.out.println("Hello Java");
        }
    }
}
- Exception 例外
- ArithmeticException ゼロ除算など、不正な算術計算で発生する例外
- NumberFormatException 数値変換する文字列が不正な形式の時に発生する例外
- ArrayIndexOutOfBoundsException 配列の範囲外にアクセスした時に発生する例外
- Javaの道:例外(1.はじめての例外)
  http://www.javaroad.jp/java_exception1.htm
- Java 入門 | 単純な例外処理
  http://msugai.fc2web.com/java/trydemo.html
- 【初心者向け】よく出会うJavaのエラーと対策7選!
  https://eng-entrance.com/java-basic-error