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

Desafío: agregando más propiedades a la serie. Error y solución.

Me encontré con un error muy específico que paso a explicar: Quise probar el programa con la nueva serie protagonizada por Nicole Kidman titulada "The perfect couple". Para ello introduje las palabras "perfect couple" y el programa se cortó con un error. Probé con otras series y todo estaba bien. Así que investigué la API usando Postman y descubrí que para ver la info de la serie de Nicole Kidman debía colocar "the perfect couple" porque existe una serie china llamada "perfect couple" que no contiene información sobre la cantidad de temporadas. Dice "N/A". Por éso el error, ya que, nosotros mapeamos ese dato como número entero. Pensé varias soluciones y la más sencilla que se me ocurrió fue mapear el dato como String y luego corregir el método "buscarEpisodioPorSerie" de modo tal que parsee el valor de total de temporadas de String a Integer, pero agregando un try-catch de NumberFormatException. El código del método quedaría así:

    private void buscarEpisodioPorSerie() {
        DatosSerie datosSerie = getDatosSerie();
        List<DatosTemporadas> temporadas = new ArrayList<>();
        // Inicializa un totalTemporadas en 0:
        int totalTemporadas = 0;
        // Parsea el total de temporadas que vienen como String:
        try {
            totalTemporadas = Integer.parseInt(datosSerie.totalTemporadas());
        } catch (NumberFormatException e) {
            // Si el valor es "N/A", se mantendrá totalTemporadas como 0
            // y se informará que no hay información sobre temporadas y episodios de
            // esa serie en particular:
            System.out.println("No hay información de temporadas y episodios de la serie: "
                    + datosSerie.titulo());
            return; // Sale del método.
        }
        // Si hay informacion del número de temporadas, entonces muestros los episodios:
        for (int i = 1; i <= totalTemporadas; i++) {
            var json = consumoApi.obtenerDatos(URL_BASE + datosSerie.titulo().replace(" ", "+") + "&season=" + i + API_KEY);
            DatosTemporadas datosTemporada = conversor.obtenerDatos(json, DatosTemporadas.class);
            temporadas.add(datosTemporada);
        }
        // Muestra las temporadas y episodios encontrados:
        temporadas.forEach(System.out::println);
    }
1 respuesta

¡Hola Mariana! ¿Cómo estás?

Gracias por tu aporte en el foro, excelente solución. Su contribución es esencial para el crecimiento de nuestra comunidad en Alura.

Sigue así y no dudes en volver al foro si tienes alguna pregunta o dificultad.

Abrazos y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!