0

現在、オブジェクトの暗号化と復号化を試していますが、読み取りメソッドが宣言されるたびに EOFException に出くわしています。すべての例外を処理しようとしている私のコードには多くの冗長性があるように感じます。そのため、削除するキャッチ/スロー フレーズと、この問題を解決する方法を教えていただければ幸いです。ありがとう。

java.io.EOFException は、コード内の (** **) のある行を指しています。他のすべての行は、NetBeans によって生成されたコードです。

public static void readFromBinary() throws IllegalBlockSizeException, EOFException
{
try {
    BufferedReader br3 = new BufferedReader(new FileReader(noteFileName));     
    if (br3.readLine() != null) {
        FileInputStream fINoteStream = new FileInputStream(noteFileName);
        ObjectInputStream oINoteStream = new ObjectInputStream(fINoteStream);
        while(true){
        try{
        **SealedObject sObj = (SealedObject)oINoteStream.readObject();**
        Note note = (Note) sObj.getObject(new NullCipher());
        noteList.add(note);
        }
        catch(EOFException e){
            e.printStackTrace();
            break;
        }
        catch (IllegalBlockSizeException e){
            e.printStackTrace();
            break;
        }
        catch (BadPaddingException e){
            e.printStackTrace();
            break;
        }
        catch (ClassNotFoundException e){
            e.printStackTrace();
            break;
        }
        }
        oINoteStream.close();
    }
}
catch (FileNotFoundException e){
    e.printStackTrace();
}
catch (IOException e){
    e.printStackTrace();
} 
}
}

別のクラスでのメソッド呼び出し:

try{
        DataStorage.readFromBinary();
        }
        catch (IllegalBlockSizeException e)
        {
            e.printStackTrace();
        }
        catch (EOFException e)
        {
            e.printStackTrace();
        }
4

1 に答える 1

0

EOFException入力の終わりに到達したことを意味します。inout を閉じて、ループから抜け出す必要があります。スタック トレースを出力する必要はありません。SealedObjectオブジェクトストリームがどのように機能するかだけで、具体的には何の関係もありません。

この例外をキャッチするかスローするかを決定する必要があります。両方を行うべきではありません。

于 2015-01-11T17:44:21.810 に答える