• ベストアンサー

try catch 文について

jcpadでプログラムを組んでいます。  コンパイル実行すると 「例外 java.io.IOException は報告されません。スローするにはキャッチまたは、スロー宣言をしなければなりません。」 というエラーがでるのですが、BufferedReaderやDataInputStreamでは 例外処理(try~catch)は必ず書かないといけないんですか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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)は必ず書かないといけないんですか」という問の答えは「使うメソッドによる」ということが答えになります。

参考URL:
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/index.html
gb-club
質問者

お礼

詳しく、わかりやすい説明ありがとうございます。 参考URLこれから利用したいと思います。

その他の回答 (1)

回答No.1

スローするにはキャッチまたは、スロー宣言をしなければなりません。 とありますので、 (1)try~catchを書く か (2)public void hoge()throws IOExceptionとスロー宣言を書く のどちらかです。 記述するプログラムの仕様にもよりますが、 IOExceptionが発生した場合の処理を、発生箇所で対処するなら(1)、 IOExceptionが発生した場合の処理を、呼び出し元に任せるなら(2)、 です。

gb-club
質問者

お礼

迅速な回答ありがとうございます。 大変参考になりました。

関連するQ&A