例外を発生させる / 伝える!「throw」と「throws」とは?
Javaの例外処理には try-catch
だけでなく、throw と throws という2つの重要なキーワードがあります。
これらは、例外を明示的に発生させたり、呼び出し元に伝えたりするために使います。
throw:例外を発生させる
throw は、明示的に例外を投げる(発生させる)ためのキーワードです。
使い方は以下のようになります:
throw new 例外クラス("メッセージ");
例:条件に応じて例外を発生させる
public class Sample {
public static void checkAge(int age) {
if (age < 0) {
throw new IllegalArgumentException("年齢は0以上でなければなりません");
}
System.out.println("年齢:" + age);
}
}
throws:例外を呼び出し元に伝える
throws は、そのメソッドで例外が発生する可能性があることを示し、呼び出し元にその責任を委ねるときに使います。
public void readFile(String path) throws IOException {
// ファイル処理でIOExceptionが発生するかも
}
例:IOExceptionをthrowsで通知
import java.io.*;
public class FileReaderExample {
public static void read(String filename) throws IOException {
BufferedReader br = new BufferedReader(new FileReader(filename));
System.out.println(br.readLine());
br.close();
}
public static void main(String[] args) {
try {
read("sample.txt");
} catch (IOException e) {
System.out.println("ファイル読み込みに失敗しました");
}
}
}
throw と throws の違い
キーワード |
役割 |
書く場所 |
使用例 |
throw |
例外を実際に発生させる |
メソッドの中 |
throw new IllegalArgumentException(); |
throws |
例外を呼び出し元に伝える |
メソッドの宣言部 |
public void x() throws IOException |
まとめ
throw は「この場で例外を発生させる」、throws は「このメソッドは例外を投げる可能性があります」と事前に伝えるためのキーワードです。
Javaの例外処理をより柔軟に、安全に扱うために、throwとthrowsの使い分けをしっかり身につけましょう!