- 締切済み
throwsについて
こんにちは。 最近、JAVAの勉強を始めたのですがわからない点がありましたので質問に参りました。 こちらのページに http://msugai.fc2web.com/java/throws.html > コンパイル時に、スローされた例外が呼び出し元でキャッチされているかどうかチェックされます。 > キャッチされていなければ、コンパイルエラーになります。 とあったので試しに以下のようなコードを作りました。 class SampleException { public static void main(String[] args) { //try{ exMethod(); //} //catch(NumberFormatException e){} //catch(Exception e){} } private static void exMethod() throws NumberFormatException { String notnum = "非数値"; int suti = Integer.parseInt(notnum); } } (try~catchはコメントアウトしたまま) この説明の通りならコンパイルエラーが出るだろうと思ったのですが コンパイルしてみると成功してしまいました。 (throwsにExceptionを追加すればコンパイルエラーは出ます。) throws NumberFormatExceptionと記述しておけば このメソッド使うときはNumberFormatExceptionかExceptionの例外処理を 必ずしなくてはならないものだと思っていたのですが これは私の認識違いなのでしょうか? それともコードが何か間違えているのでしょうか? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- ngsvx
- ベストアンサー率49% (157/315)
RuntimeExceptionから派生している例外はキャッチしなくてもコンパイルエラーにはなりません。 http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/RuntimeException.html http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/NumberFormatException.html
NumberFormatExceptionは非チェック例外といって、catchしなくてもコンパイルエラーにならない例外だからです。
お礼
非チェック例外なんてものがあったんですね。 この程度の例外は自分でチェックして 起こらないようにしろってことなんですかね。 回答してくださってありがとうございました。 これですっきりしました。