Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

EOFException en ultimo ejercicio

Hola, tengo este error en el ultimo ejercicio de serialización que pide crear un archivo con valores a partir de un objeto cuenta corriente. Lo escribe bien al archivo pero el problema es cuando creo el TestDeserializacion me da un error EOFException aún habiendo seguido los pasos... creo que falta algo que no esta contemplado en los detalles(ya me pasó que tuve que "debugear" mi ejercicio por falta de info, pero bueno, lo vi como una ventaja a mi favor porque aprendo debuggeo) pero en este caso no hay caso: no lo puedo hacer andar y estoy casi seguro que me falta algún retoque en algún lado.

package ar.com.bytebank.test;

import java.io.EOFException;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectStreamException;

import ar.com.bytebank.modelo.CuentaCorriente;

public class TestDeserializacion {

 public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
  ObjectInputStream ois = new ObjectInputStream(new FileInputStream("cc.bin"));
  CuentaCorriente cuco = (CuentaCorriente) ois.readObject();
  ois.close();

  System.out.println(cuco.getSaldo());
  System.out.println(cuco.getTitular().getNombre());

 }
}

El anterior es el código de la clase y esta es la excepción en consola:

Exception in thread "main" java.io.EOFException
 at java.base/java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:3214)
 at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1684)
 at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:509)
 at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:467)
 at ar.com.bytebank.test.TestDeserializacion.main(TestDeserializacion.java:16)
1 respuesta

Hola Nahuel, espero que estés bien!

Perdón por la demora.

La fila que devuelve error es esta: CuentaCorriente cuco = (CuentaCorriente) ois.readObject();.

Entonces creo, que por tratarse de lectura de objetos, los Throws no son suficientes y sí un Try-catch justamente en esta parte de lectura de objetos.

Lo digo porque EOFException señala que se ha alcanzado el final del archivo leído, dado algún error en él y en la compilación, etc. Referencia oficial sobre la excepción: https://docs.oracle.com/javase/7/docs/api/java/io/EOFException.html

Saludos y buenos estudios!