演習課題「例外の種類を変更しよう」
右のコードは、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