RuntimeException
RuntimeExceptions はコード内で必ずしも try/catch ブロックを必要としません。適切なコーディングで多くは回避できます。しかし、ミスが検出されずに RuntimeException がキャッチされない場合、アプリケーションは失敗し、ユーザーには必ずしも理解しやすくない情報が表示されます。この演習では、起こりうる RuntimeException をキャッチしない場合と、try/catch で処理する場合に何が起きるかを確認します。
この演習はコースの一部です
Javaにおけるデータ型と例外処理
演習の手順
- このアプリケーションの
withoutTryCatch()とwithTryCatchの各メソッドを確認し、違いを把握してください。 - 変更せずにアプリケーションを実行します。これにより
withoutTryCatch()メソッドが実行され、RuntimeExceptionが発生します。 - 5 行目をコメントアウトし、7 行目のコメントを外してから再実行します。今度は
withTryCatch()メソッドが実行され、RuntimeExceptionが処理されます。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
public class RuntimeExceptionHandling {
public static void main(String[] args) {
// Comment out this line
withoutTryCatch();
// Uncomment this line
// withTryCatch();
}
public static void withoutTryCatch() {
String[] mounts = { "Everest", "K2", "Kangchenjunga", "Lhotse" };
String selectedMount = mounts[4];
System.out.println("Selected item is: " + selectedMount);
}
public static void withTryCatch() {
try {
String[] mounts = { "Everest", "K2", "Kangchenjunga", "Lhotse" };
String selectedMount = mounts[4];
System.out.println("Selected item is: " + selectedMount);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Oops - made a mistake accessing the mounts array with a bad index.");
}
}
}