例外処理
Try-Catch ブロック
概要: tryブロック内でコードを実行し、例外が発生した場合はcatchブロックでそれを捕捉して処理します。
try {
// 例外が発生する可能性のあるコード
} catch (ExceptionType name) {
// 例外を処理するコード
}
例:
try {
int division = 10 / 0;
} catch (ArithmeticException e) {
System.out.println("算術例外が発生しました: " + e.getMessage());
}
例外の種類
Javaの例外には大きく分けて以下の三種類があります。
-
チェック例外(Checked Exceptions)
コンパイル時にチェックされる例外。
プログラマがこれらの例外に対処することが期待されます(例: IOException、SQLException)。 -
実行時例外(Runtime Exceptions)
実行時に発生する例外で、プログラムの不正な操作によって引き起こされます(例: NullPointerException、IndexOutOfBoundsException)。 -
エラー(Errors)
プログラムの制御を超えた重大な問題を示します(例: OutOfMemoryError、StackOverflowError)。
カスタム例外
特定のアプリケーションのニーズに合わせて定義されるユーザー定義の例外。
ExceptionクラスまたはRuntimeExceptionクラスを継承して作成されます。
カスタム例外の作成
例:
public class CustomException extends Exception {
public CustomException(String message) {
super(message);
}
}
使用方法:
try {
throw new CustomException("これはカスタム例外です");
} catch (CustomException e) {
System.out.println(e.getMessage());
}
その他の例外処理概念
finally ブロック
tryまたはcatchブロックの後に実行されるブロック。
例外の有無に関わらず、リソースの解放などのクリーンアップコードを記述するのに適しています。
マルチキャッチ
複数の例外を単一のcatchブロックで捕捉する機能。
例: catch (IOException | SQLException ex) { ... }
スロー(Throw)とスローズ(Throws)
スロー(Throw): プログラム内で明示的に例外を発生させるキーワード。
スローズ(Throws): メソッドが例外を投げる可能性があることを宣言するキーワード。