【Java】エラー と 例外 について(備忘録)
1.はじめに
①.Javaのエラーや例外に関するクラスは全て Throwable クラス配下にあります。
②.Throwable クラス配下には、Error クラスと Exception クラスが存在します。
③.Exception クラス配下には、Runtime Exceptionクラス と 検査例外クラス が存在します。

※画像は、Java 例外処理のサンプル(検査例外) よりお借りしました。
2.エラー(Errorクラス)とは
・PDFファイルやCSVファイル等をダウンロードしようとした際、「ファイルを保存するための容量が不足している」「システムトラブル」といった理由で、ダウンロードが失敗することがあります。
このようにプログラムは実行されたが期待結果が得られない問題を、エラーと呼びます。
エラーは、プログラムの正常な実行を妨げる問題であり、プログラムの修正では対処できない場合が多いです。
3.例外(Exceptionクラス)とは
・例外は、プログラムを実行して初めて分かる問題のことです。
例外の具体例として、「存在しないファイルを開こうとした」「整数を0で割ろうとした」があります。
例外を適切に処理する為に、例外処理という仕組みを使用します。
4.例外処理の基本的な仕組み
例外処理の基本的な仕組みとして、try-catch が用意されています。
try {
// 例外が発生する可能性のある処理
} catch (例外クラス 変数名) {
// 例外が発生した場合の処理
} finally {
// 例外の発生有無に関わらず実行される処理(記述するかは任意)
}
5.サンプルプログラム
〇例1:catch ブロックが1つの場合
public class Sample_1 {
public static void main(String[] args) {
try {
// 例外が発生する可能性のある処理
int result = 10 / 0;
} catch (ArithmeticException e) {
// 例外が発生した場合の処理
System.out.println("エラー: 0で割ることはできません");
} finally {
// 例外の発生有無に関係なく実行される処理
System.out.println("処理が終了しました");
}
}
}
エラー: 0で割ることはできません
処理が終了しました
〇例2:catch ブロックが複数の場合
public class Sample_2 {
public static void main(String[] args) {
try {
// 例外が発生する可能性のある処理
int[] array = {1, 2, 3};
System.out.println(array[3]);
int result = 10 / 0;
} catch (ArrayIndexOutOfBoundsException e) {
// 参照した配列のインデックスに誤りがある場合の例外処理
System.out.println("エラー: 配列のインデックスに誤りがあります");
} catch (ArithmeticException e) {
// 整数を0で割ろうとした場合の例外処理
System.out.println("エラー: 0で割ることはできません");
} finally {
// 例外の発生有無に関わらず実行される処理
System.out.println("処理が終了しました");
}
}
}
エラー: 配列のインデックスに誤りがあります
処理が終了しました
6.重要な補足
・ArrayIndexOutOfBoundsException や ArithmeticException 等は、Runtime Exceptionクラス のサブクラスなので非検査例外に該当します。
その為、try-catch を使用する必要はありません。
〇例3:try-catch・ArithmeticException を使用せずにゼロ除算を回避するプログラム
public class Sample_3 {
public static void main(String[] args) {
int num = 0;
if (num == 0) {
System.out.println("ゼロで除算できません");
} else {
int result = 10 / num;
System.out.println("計算結果:" + result);
}
}
}
7.参考
・8.1 例外とエラーについて
・【Java】try-catchで例外処理を実装しよう!Exceptionクラスの使い方
・【Java】検査例外と非検査例外の違いを図でまとめてみた
8.その他
・実行環境
Discussion