• 締切済み

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の例外処理を 必ずしなくてはならないものだと思っていたのですが これは私の認識違いなのでしょうか? それともコードが何か間違えているのでしょうか? よろしくお願いします。

みんなの回答

  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.2

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

参考URL:
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/RuntimeException.html
noname#86752
noname#86752
回答No.1

NumberFormatExceptionは非チェック例外といって、catchしなくてもコンパイルエラーにならない例外だからです。

参考URL:
http://www.y-adagio.com/public/standards/tr_javalang2/exceptions.doc.html
hataku
質問者

お礼

非チェック例外なんてものがあったんですね。 この程度の例外は自分でチェックして 起こらないようにしろってことなんですかね。 回答してくださってありがとうございました。 これですっきりしました。

関連するQ&A