Javaの例外処理におけるthrowとthrows──なぜこの名前なの?英語と文法の観点から解説!
こんにちは。ゆうせいです。
今回は、Javaの例外処理に出てくる2つの似たようなキーワード──
throw
throws
この微妙に違う単語たちのネーミングの由来について、英語の文法やJavaの設計思想から解説していきます!
「スペルが似ててややこしい…」と思ったこと、ありませんか?一度ちゃんと意味を理解すると、どちらもスッと頭に入るようになりますよ。
まず結論!throw
とthrows
はどう違う?
キーワード | 役割 | 使い方の文脈 |
---|---|---|
throw | 実際に例外を「投げる(発生させる)」 | メソッド内部で使う |
throws | 例外を「投げる可能性がある」と宣言する | メソッド定義のときに使う |
英語の文法から見てみよう
throw
:動詞の原形
throw
は英語で「投げる」という動詞の原形です。
- I throw the ball.(私はボールを投げる)
Javaでも、throw
はまさに例外という「ボール」を投げる操作です:
throw new IOException("ファイルが見つかりません!");
「今まさに投げている」瞬間を表しています。
throws
:三単現の形ではなく、sがついた特別な意味
Javaのthrows
は、単なる三単現(三人称単数現在)のs
ではありません。
実際には、「このメソッドは例外を投げる可能性があるよ!」という宣言として使われます。
public void readFile() throws IOException {
// ファイル読み込み処理
}
これは英語で言えば:
- This method throws an IOException.(このメソッドはIOExceptionを投げる)
という文章に対応しています。
なぜ似た名前を使ったのか?
意図的に「セット感」を出すため
Javaを設計した人たちは、throw
とthrows
を同じ語源にして、ペアとして理解しやすくすることを意図しています。
たとえば:
throw
→ 実際に投げる(動作)throws
→ 投げる可能性があると表明(宣言)
これは、try-catch-finallyのように、「一貫した用語の統一性」による理解のしやすさを狙っています。
たとえ話で覚えよう!
野球にたとえてみましょう。
throw
:今、ピッチャーがボールを投げる!(実行)throws
:ピッチャーはボールを投げる可能性がありますよ、気をつけてね!(宣言)
呼び出し側(catcher)がちゃんと構えておかないと、受け取れずにミスになります。
コードで比較してみよう
// throws:投げる可能性を宣言
public void dangerousMethod() throws IOException {
// throw:実際に例外を発生させる
throw new IOException("重大なエラー発生!");
}
このように、「宣言と実行」が1セットで動いています。
今後の学習の指針
このような細かい言語仕様の背景には、英語圏の文化的・言語的な設計思想が関係しています。
今後の学習では次の点を意識してみましょう:
- 英単語の意味をそのままコードに当てはめて理解する
- 宣言(throws)と動作(throw)の違いを意識する
- 実際に例外を自作して、throw/throwsの使い分けを練習する
プログラムは言語であると同時に、思想を表す手段です。単なる記号ではなく、そこに込められた「考え方」まで読み解けると、新人エンジニアの皆さんも一歩先の理解に進めますよ!
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール

- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。