2015-01-11 7 views
0

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

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

Возможный дубликат [EOFException - как обращаться?] (Http://stackoverflow.com/questions/18451232/eofexception-how-to-handle) – Raedwald

ответ

0

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

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

Смежные вопросы