0

これはばかげた質問かもしれませんが、他のどこにも答えを見つけることができませんでした。保存のためにファイルを読み書きするクラスがあります。今、私は自分の道に来る可能性のあるいくつかのエラーを処理しようとしています. 私が知りたいのは、これが Java の合法的な慣行なのか、それとも一般的な慣行なのかということです。

try {
    in = new ObjectInputStream(new FileInputStream(fileName));
    score = (Score)in.readObject();
} catch() {
    ...
}

私が抱えている問題は、ファイルが空の場合、ファイルを読み取れないことです。プログラムがクラッシュするので、catch ステートメントからファイルにデータを作成し、もう一度試してキャッチするという一般的または定期的な方法を知りたいです。次に、2 番目のキャッチで、プログラムをクラッシュさせることができます。

このようにしたい理由は、ユーザーがファイル内のデータを消去した場合です。

それが合法である場合、これは構文ですか?

try {
    // try something here
} catch(//Exception here) {
    // Create a new file and try again.
    try {
        // try again
    } catch() {
        // Crash the program
    }
}
4

2 に答える 2

1

使用する前に、ファイルが存在しないか空であるかどうかを確認してみませんか?

try {
    File file = new File( fileName);
    if( !file.exists() || file.length() == 0) { 
        // Create the file, initialize it with some default value
    }
    in = new ObjectInputStream(new FileInputStream( file));
    score = (Score)in.readObject();
} catch() {
    ...
}

ファイルの存在を確認してから実際にファイル内で使用するまでの間に、ユーザーがファイルを削除する可能性がある小さな競合状態があることに注意してくださいFileInputStream

于 2013-04-10T02:35:36.937 に答える
0

一般に、catch ブロックでこのような作業を行うのは悪い形式です。失敗時に再試行したい場合は、次のようなループを使用します

int retryCount = 0;
boolean success = false;
while(!success && retryCount < 2) {
    retryCount++;
    try {
        ...
        success = true;
    } catch (Exception ex) {
        // log exception
    }
}
于 2013-04-10T02:38:44.107 に答える