#java #netbeans #deserialization #objectinputstream #eofexception
#java #netbeans #десериализация #objectinputstream #исключение eofexception
Вопрос:
Я читал другие вопросы, подобные этому, но не очень помог. Итак, у меня есть некоторое сериализованное содержимое в файле, и я пытаюсь прочитать его и распечатать на консоли, содержимое печатается нормально, но в конце отображается исключение EOFException. Есть ли какой-либо способ исправить мой код, чтобы избежать этого исключения?
try {
File file = new File("EnrolledStudentsSerial.txt");
FileInputStream fi = new FileInputStream(file);
ObjectInputStream input = new ObjectInputStream(fi);
while(true) {
System.out.println(input.readObject());
}
}
catch (IOException | ClassNotFoundException e) {
System.out.println("Error: " e);
}
Ответ №1:
Я не думаю, что вы хотите «избежать» этого исключения.
Вам нужно знать, когда вы дойдете до конца ввода, а исключение EOFException — это то, что говорит вам, что вы дошли до конца ввода.
Скорее, вы хотите перестать рассматривать это как условие ошибки, поскольку это не ошибка, это нормально и ожидаемо.
try {
… code as before …
}
catch (EOFException e) {
// end of input, nothing to do here
}
catch (IOException | ClassNotFoundException e) {
System.out.println("Error: " e);
}