• ベストアンサー

JAVAの問題

次のような練習問題なのですが… 「ファイル入出力操作の最中に生成される可能性のある例外の階層を、次に示します。 Exception   +--IOException      +--FileNotFoundException  指定した名前のファイルを開き、そのデータを読み取るxというメソッドがあるとします。 このx()メソッドにtry-catchステートメントが含まれていない場合に当てはまる説明はどれですか? 正しいものをすべて選んでください。 A.X()メソッドはIOExceptionまたはExceptionを生成するものとして宣言しなければならない。 b.X()メソッドはFileNotFoundExceptionを生成するものとして宣言しなければならない。 c.X()を呼び出すすべてのメソッドでtry-catchを使い、FileNotFoundExceptionをキャッチしなければならない D.特に注意すべきことは無い。」 正解はAのみになっています。 かなり疑問です。特にその解説が・・・ まずDが誤りなのはわかります。 Aもわかります。 しかしここからです(^_^;) bが不正解の理由が 「IOExceptionを宣言するだけで十分だから」 cが不正解の理由が 「try-catchを使う以外にも方法はあるから」 というものです。 どうも腑に落ちません。 問題が 「もっとも正しいものひとつを選べ」 というものならわかるのですが 「正しいものをすべて選んでください。」 という問題であるのだから、 bとcも正解になるような気がするのですが・・・ bとcが不正解である理由を教えてください。

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

  • ベストアンサー
  • ranx
  • ベストアンサー率24% (357/1463)
回答No.1

b. FileNotFoundException ではない IOException が生成される可能性がある。 c. X() を呼び出すメソッドでIOException の生成を宣言し、それを呼び出す  メソッドで try-catch を使ってもよい。 解説に示されたbの不正解の理由はちょっと変ですね。

azicyan
質問者

補足

ranx様 いつもお世話になっています。 >IOException が生成される可能性がある。 確かにそうですね。 しかしこの解説から考えると、生成する例外はFileNotFoundExceptionだけれども、「IOExceptionだけで十分」というふうに取れませんか? cに関しても「間違いではないけれども・・」 (しなければいけない、とは書いているものの) という解説には???疑問です。 なんとなく問題を作った人が、ひとつだけ選べ、という問題を出していると思い込んでしまっているような気もするのです。 あまり深く考えないことにします。

その他の回答 (1)

回答No.2

b.X()メソッドはFileNotFoundExceptionを生成するものとして宣言しなければならない。 これを読むと、FileNotFoundExceptionを必ず宣言しなければならないという事を言っているように感じますが、実際はIOException がFileNotFoundExceptionをラップしていますので、FileNotFoundExceptionが発生してもIOException を宣言していれば良いんです。 必ずしもFileNotFoundExceptionを宣言する必要は無いという事で×です。

azicyan
質問者

補足

回答ありがとうございます。 なんとなく解説に説得力が無いため、 質問して見ました。 「しなければならない」というところに着目して考えたほうがわかりやすいですね。 ありがとうございました

関連するQ&A