数日前、入力が完了するまでファイルから読み取ることについて質問しました。調査したいくつかの回答を受け取りましたが、このトピックに何らかの形で関連する質問が1つあります。それは、次の代わりに、追加のテスト、「finally」句、および別のtry-catchを使用する必要がある理由です。
DataInputStream reading = null;
try{
reading = new DataInputStream(new FileInputStream("tes.t"));
while(true)
{
System.out.println(reading.readInt());
System.out.println(reading.readDouble());
}
}catch(IOException xxx){System.err.println("Error: " + reading.getMessage());}
catch(EOFException xxx){reading.close();}
なぜこれでは不十分なのですか?つまり、EOFに到達するとすぐに、例外が発生します。それ以外の場合は、例外をキャッチしてエラーメッセージを出力します。なぜ追加のテストが必要なのですか?このアプローチの何が問題になっていますか?
編集:わかりました、なぜそれが悪いことなのか理解できました。しかし、次のようなコードを作成した場合はどうでしょうか。
DataInputStream reading = null;
try{
reading = new DataInputStream(new FileInputStream("tes.t"));
while(reading.available()!=0)
{
System.out.println(reading.readInt());
System.out.println(reading.readDouble());
}
}catch(EOFException xxx){}
catch(IOException xxx){System.err.println("Error: " + reading.getMessage());}
reading.available()の値をチェックすることは、入力側のより良いテストですか、それとも同じくらい悪いですか?