例外のスローとキャッチ

Javaの「例外のスローとキャッチ(throw and catch)」は、プログラム実行中に発生するエラー(例外)を検出し、それに適切に対処する仕組みです。この仕組みによって、予期しない状況に柔軟かつ安全に対応することができます。


1. 例外のスロー(throw)

例外をスローするとは、ある異常状態が発生したことを通知するために、例外オブジェクトを明示的に投げることです。Javaでは、throw キーワードを使って例外をスローします。

構文

java
throw new 例外クラス名("エラーメッセージ");

java
public void divide(int a, int b) { if (b == 0) { throw new ArithmeticException("0で割ることはできません"); } System.out.println(a / b); }

注意点

  • throw 文を使うと、その時点でメソッドの実行は終了し、例外処理に移行します。

  • チェック例外をスローする場合は、メソッド宣言に throws を付ける必要があります(後述)。


2. 例外のキャッチ(catch)

例外をキャッチするとは、スローされた例外を受け取り、適切に処理することです。これは try-catch ブロックを使って実現します。

構文

java
try { // 例外が発生する可能性のある処理 } catch (例外クラス名 変数名) { // 例外が発生した場合の処理 }

java
public void execute() { try { divide(10, 0); } catch (ArithmeticException e) { System.out.println("エラー発生: " + e.getMessage()); } }

3. throws宣言(チェック例外のスロー)

Javaには2種類の例外があります:

種類 説明
チェック例外 コンパイル時に検査される例外(例:IOException)
非チェック例外(実行時例外) 実行時にのみ検出される(例:NullPointerException)

チェック例外をスローする場合、メソッドの宣言部に throws を追加する必要があります。

java
public void readFile(String path) throws IOException { FileReader reader = new FileReader(path); }

このように宣言することで、呼び出し元に例外処理を委ねることができます。


4. 例外処理のベストプラクティス

  • 必要な場合のみ例外をスローする。

  • 具体的な例外クラスを使って意味のあるエラー処理を行う。

  • catch 節ではエラーメッセージの出力やログ記録などを行う。

  • finally 節を使えば、例外の有無にかかわらず共通の後処理が書ける。


まとめ

  • throw を使って例外を発生させる。

  • try-catch を使って例外を捕捉・処理する。

  • チェック例外をスローする場合は、メソッドに throws を明示する。

  • 適切な例外処理によって、安全で信頼性の高いプログラムを実現できる。

生成日:2025/05/03