質問: Javaを勉強している者です。 タイトルの通り、Java言語の例外処理で使われるthrowとthrowsの違いが よく分かりません。 どのような場合にthrowを使い、どのような場合にthrowsを使うのでしょうか。 調べてみたのですがよく理解できませんでした。 お教え頂ければ幸いです。
回答: 非常にざっくり説明すると、記述する位置が異なります。 ですので、役割は明確に違います。 throw ===== throwはメソッド内で、意図的にExceptionを発行し、 投げるために使用します。 ですので、記述できるのはメソッド内になります。 ``` Java public static void main(String[] args) { throw new RunTimeException(“意図的にExceptionを発行しました”); } ``` throws ====== throwsはメソッド内で発生したExceptionを自信のメソッド内でcatchするのではなく、呼ばれる側に例外を投げるために使用します。 ですので、記述できるのはメソッドの引数の横になります。 ``` public void test() throws Exception { } ``` 複数もいけます。 ``` public void test() throws IOException, SQLException { } ``` まとめ === メソッド内では、一つのExceptionしか投げることはできないので、throw メソッドは複数のExceptionを投げることができるので、throws そういう風に覚えました。