• 締切済み

例外、null

Cinクラスでは,BufferedReaderクラスで定義されたreadLineメソッドを使って, 一行ずつ入力を行っている。 class Cin { private static BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); public static String getLine() { String s = ""; try { s = in.readLine(); } catch (IOException e) { System.out.println("IO error!"); System.exit(1); } return s; } } このreadLineメソッドは,入力の終わりに到達するとnullを返し, それ以外の入力エラーがあるとIOException(Exceptionクラスのサブクラス)を投げる。 また入力の終わりに到達したことを,例外を用いて通知することも可能である。 readLineメソッドが,入力に関する状態を示すのに,「例外」、「nullを返す」 という二つの方法を使っているのにはどういう理由があるのか教えて下さい。

みんなの回答

noname#30871
noname#30871
回答No.2

 学校の宿題の文末を「教えて下さい」に変えただけのように見えちゃうんですが、そうでなければごめんなさい。 >入出力エラーの場合は(以下略)  お手持ちのJavaのテキストで「throw」「throws」の使い方と用例を調べましょう。それほど難しくはありません。

回答No.1

「入力の終わりに達したよ」というのは通常プログラムが確認する事項です (予測可能ですよね?) ところが、終わりに達したにも関わらず更に読み込むとか(論理エラーです)、 データが壊れていて正常に読めなかったとか (ハードエラーです) というのを、事由コードでいちいち返却したのでは アプリケーションでエラー処理ばっかりかかなくてはならないので、大変です そこで、例外を起動するようにしてあるのです

Tamagawa
質問者

補足

続けざまの質問で大変申し訳ないのですが、このCinクラスについて 入出力エラーの場合は,readLineメソッドが投げる例外IOExceptionをキャッチせず,getLineを呼び出したメソッドにそのまま投げ,入力の終わりに到達した場合には,nullを返すのではなく例外を投げるようにするとしたらどのように変えればいいのかがわかるのでしたら、ぜひ教えてもらえないでしょうか?お願いします。

関連するQ&A