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

Duda sobre el LocalDate.parse

Hola , yo voy construyendo las clases y métodos a la par de Genesys. Por lo general sale todo bien , si no me equivoco yo. Pero tuve un problema en la Clase Episodios mas precisamente en el metodo que llama a Fecha de lanzamiento==>

public Episodios(Integer numero, DatosEpisodio d) { this.temporada= numero; this.titulo = d.titulo(); this.numeroEpisodio = d.numeroEpisodio(); try { this.evaluacion = Double.valueOf(d.evaluacion()); }catch (NumberFormatException e){ this.evaluacion= 0.0; }

    En la parte que sigue comencé con lo errores
    
    this.fechaDeLanzamiento= LocalDate.parse(d.fechaDeLanzamiento()); ==> 
    
    Si lo uso asi como hizo Genesys al principio al ejecutar la aplicación me daba muchos errores . Probando anulé esta parte del código y funcionó bien. Obvio sin mostrar la fecha de lanzamiento. A Genesys le funcionó bien . Luego lo puse dentro de un try catch ==> 
    
    try {
        this.fechaDeLanzamiento= LocalDate.parse(d.fechaDeLanzamiento());
    }catch (DateTimeParseException e){
        this.fechaDeLanzamiento = null;
    }==> y funciona bien.
    
    Lo que no entiendo es porqué no funcionó al principio. Seguí todos los pasos y a Genesys le funcionó bien y a mí me tiraba errores. perdón por molestar pero quiero llegar a entender el porque. Seguramente es algo que estoy haciendo mal pero no me llego a dar cuenta.
    Muchas gracias
    Saludos Roberto
1 respuesta

Supongamos que encontraste la siguiente serie:

{
  "Title": "Aso",
  "Year": "2023",
  "Rated": "N/A",
  "Released": "N/A",
  "Runtime": "N/A",
  "Genre": "Short",
  "Director": "Mohammad Darvishi",
  "Writer": "N/A",
  "Actors": "Farshid Gavili, Azin Kananian, Mohammad Reza Nemati",
  "Plot": "N/A",
  "Language": "Persian",
  "Country": "Iran",
  "Awards": "N/A",
  "Poster": "url",
  "Ratings": [],
  "Metascore": "N/A",
  "imdbRating": "N/A",
  "imdbVotes": "N/A",
  "imdbID": "tt29580623",
  "Type": "movie",
  "DVD": "N/A",
  "BoxOffice": "N/A",
  "Production": "N/A",
  "Website": "N/A",
  "Response": "True"
}

Aquí la fecha de lanzamiento (propiedad Released en el objeto) tiene como valor N/A, osea no se especifica la fecha de lanzamiento.

this.fechaDeLanzamiento = LocalDate.parse(d.fechaDeLanzamiento());

Esta línea de código se ejecutará correctamente siempre y cuando la fecha de lanzamiento sea una fecha válida. En el ejemplo, la fecha de lanzamiento es N/A, por lo tanto la aplicación enviará un excepción de tipo DateTimeParseException.

Y para capturar y manejar ese error se usan el bloque try-catch. Si la fecha de lanzamiento no corresponde a una fecha válida, entonces se le asigna el valor de null a esa propiedad.