Javaのthrowsとは?例外を呼び出し元に伝える宣言

Schoo Java入門 初級 第9回 例外処理

本記事は、Schooの「Java入門 初級【2026年版】」第9回「例外処理」を学ぶ前後に、throws の考え方を整理したい方向けの記事です。

throws は、「このメソッドの中で起きた例外が、呼び出し元へ出る可能性があります」と宣言するための書き方です。

throw が問題を例外として知らせる命令だとすると、throws は「その例外をこのメソッドの外へ出す可能性がある」と伝える宣言です。

Schoo コースページ:Java入門 初級【2026年版】

throwsは何のために使うのか

メソッドの中で例外が起きる可能性があるとき、その場で try-catch して処理する方法があります。一方で、そのメソッドを呼び出した側に対応を任せたい場合もあります。

そのときに使うのが throws です。throws を書くことで、「このメソッドを呼ぶ側で、例外への対応を考えてください」と示せます。

図解:throwsは呼び出し元に対応を任せる宣言
メソッド側
readFile()
throwsで例外が外へ出る可能性を宣言
呼び出し元
tryでreadFile()を呼ぶ
catchで例外に対応する
throws は、例外をその場で処理せず、呼び出し元に対応を任せることを示す宣言です。

throwsの基本形

throws は、メソッド名の後ろに書きます。

static void readFile() throws FileNotFoundException {
    FileInputStream in = new FileInputStream("data.txt");
}

この例では、readFile メソッドの中で FileNotFoundException が外へ出る可能性があることを宣言しています。

呼び出し元でtry-catchする

throws が付いたメソッドを呼ぶ側では、例外に対応する必要があります。たとえば、次のように try-catch で受け取ります。

try {
    readFile();
    System.out.println("ファイルを開きました");
} catch (FileNotFoundException e) {
    System.out.println("ファイルが見つかりません");
}

readFile() の中でファイルが見つからなかった場合、例外は呼び出し元へ渡ります。そして、呼び出し元の catch で対応します。

throwとthrowsの違い

throwthrows は名前が似ていますが、書く場所も役割も違います。

  • throw:処理の中で、実際に例外として問題を知らせる
  • throws:メソッド宣言に書き、例外が外へ出る可能性を示す
図解:throwとthrowsの役割の違い
throw
throw new Exception(…);
実際に例外として問題を知らせる
throws
void readFile() throws Exception
例外が外へ出る可能性を宣言する
throw は処理の中に書く命令、throws はメソッド名の後ろに書く宣言です。

throwsを書くと例外が消えるわけではない

throws を書くと、例外をそのメソッドの中で処理しなくてもよくなる場合があります。ただし、例外そのものがなくなるわけではありません。

例外は呼び出し元へ渡ります。そのため、どこかのタイミングで try-catch するか、さらに上のメソッドへ throws で渡す必要があります。

チェック例外ではthrowsが必要になることがある

ファイルを開く処理などでは、FileNotFoundException のようなチェック例外が出てきます。チェック例外は、Javaが「例外への対応を書いてください」と求める種類の例外です。

その場で対応するなら try-catch を書きます。呼び出し元に対応を任せるなら、メソッドに throws を書きます。

確認問題

  1. throws は、メソッドのどこに書きますか。
  2. throws を書くと、例外はどこへ渡りますか。
  3. throwthrows の違いを簡単に説明してください。

演習後の確認:こちらのページを使って、自分で考えた内容を見直せます。

あわせて読みたい関連記事

まとめ

throws は、メソッドの中で起きた例外が呼び出し元へ出る可能性を示す宣言です。throw は実際に例外として問題を知らせる命令、throws はその例外が外へ出る可能性を伝える宣言、と分けて考えましょう。

info

シェアする