Ошибка выполнения EOFException при работе с SealedObject

В настоящее время я экспериментирую с шифрованием и дешифрованием объектов, но я сталкиваюсь с EOFException каждый раз, когда объявляется мой метод чтения. Я чувствую, что в моем коде много избыточности, пытающейся справиться со всеми исключениями, поэтому было бы здорово, если бы вы могли сказать, какие фразы catch/throw нужно удалить и как я могу решить эту проблему. Спасибо.

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();
        }

person coder18    schedule 11.01.2015    source источник
comment
Возможный дубликат EOFException - как обрабатывать?   -  person Raedwald    schedule 25.03.2016


Ответы (1)


EOFException просто означает, что вы дошли до конца ввода. Вам нужно закрыть вход и выйти из цикла. Вам не нужно печатать трассировку стека. Это не имеет ничего общего с SealedObject, а только с тем, как работают потоки объектов.

Вам нужно решить, перехватываете ли вы это исключение или выбрасываете его. Вы не должны делать и то, и другое.

person user207421    schedule 11.01.2015