- ベストアンサー
try catch 文について
jcpadでプログラムを組んでいます。 コンパイル実行すると 「例外 java.io.IOException は報告されません。スローするにはキャッチまたは、スロー宣言をしなければなりません。」 というエラーがでるのですが、BufferedReaderやDataInputStreamでは 例外処理(try~catch)は必ず書かないといけないんですか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
参考URLにBufferedReaderとDataInputStreamの詳しい説明があります。まず、あなたが使っているメソッドを見てみましょう。どれを使っているかはわかりませんが「throws IOException」ということが書かれているはずです。IOExceptionは実行時例外ではないので、IOExceptionを処理するにはtry-catchするか、またはあなたが書いているメソッドにthrows IOExceptionと書かなければいけません。 また、BufferedReaderやDataInputStreamには「throws IOException」ということが書かれていないmarkSupported()というメソッドがあります。このメソッドを使う際にはtry-catchもthrows IOExceptionもする必要がありません。つまり、「BufferedReaderやDataInputStreamでは 例外処理(try~catch)は必ず書かないといけないんですか」という問の答えは「使うメソッドによる」ということが答えになります。
その他の回答 (1)
- pcbeginner
- ベストアンサー率46% (261/560)
スローするにはキャッチまたは、スロー宣言をしなければなりません。 とありますので、 (1)try~catchを書く か (2)public void hoge()throws IOExceptionとスロー宣言を書く のどちらかです。 記述するプログラムの仕様にもよりますが、 IOExceptionが発生した場合の処理を、発生箇所で対処するなら(1)、 IOExceptionが発生した場合の処理を、呼び出し元に任せるなら(2)、 です。
お礼
迅速な回答ありがとうございます。 大変参考になりました。
お礼
詳しく、わかりやすい説明ありがとうございます。 参考URLこれから利用したいと思います。