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

[Sugerencia] Haga lo que hicimos en aula

Yo para el error que obtuvimos de los espacios en la busqueda, tambien busque una forma de convertirlos a "_" para solucionar el problema, antes de ver la solución que presento el video, junto a la ayuda de Luri y documentación que me recomendo. Además de añadir un mensje si no se inserto ninguna cosa al solicitar la película.

System.out.println("Escriba el nombre de una película: ");
        var entrada = lectura.nextLine();
        if (entrada == ""){
            System.out.println("Entrada invalida");
            return ;
        }
        String busqueda = entrada.replace(" ", "_");

Igual intente usar los try en los constructores del Título para en vez de arrojar un mensaje con excepcion, encuentre una solución.

public Titulo(TituloOmdb miTituloOmdb) {
        this.nombre = miTituloOmdb.title();
        try {
            this.fechaDeLanzamiento = Integer.parseInt(miTituloOmdb.year().substring(0, 4));
        } catch (NumberFormatException e) {
            this.fechaDeLanzamiento = 0;
        }
        try {
            String runtime = miTituloOmdb.runtime();
            if (runtime != null && runtime.contains("min")) {
                this.duracionEnMinutos = Integer.parseInt(runtime.replace(" min", "").trim());
            } else {
                this.duracionEnMinutos = 0;
            }
        } catch (Exception e) {
            this.duracionEnMinutos = 0;
        }
    }
1 respuesta

¡Hola Diego, espero que estés bien!

Gracias por compartir tu enfoque para manejar los errores en la búsqueda de películas y en la conversión de datos. Veo que has implementado una solución creativa para reemplazar los espacios en blanco por guiones bajos y has añadido validaciones para la entrada del usuario, lo cual es excelente para mejorar la experiencia del usuario.

En cuanto a tu intento de manejar excepciones dentro del constructor de la clase Titulo, estás en el camino correcto. El uso de try-catch para manejar posibles errores de conversión es una buena práctica. Sin embargo, según las instrucciones de la actividad, podrías considerar lanzar una excepción personalizada ErrorEnConversionDeDuracionException cuando no puedas convertir la duración, especialmente si el valor es "N/A". Esto te permitirá manejar este caso específico de manera más clara y controlada.

Aquí tienes un ejemplo de cómo podrías modificar tu constructor para lanzar la excepción personalizada:

public Titulo(TituloOmdb miTituloOmdb) {
    this.nombre = miTituloOmdb.title();
    try {
        this.fechaDeLanzamiento = Integer.parseInt(miTituloOmdb.year().substring(0, 4));
    } catch (NumberFormatException e) {
        this.fechaDeLanzamiento = 0;
    }
    try {
        String runtime = miTituloOmdb.runtime();
        if (runtime != null && runtime.contains("min")) {
            this.duracionEnMinutos = Integer.parseInt(runtime.replace(" min", "").trim());
        } else if (runtime != null && runtime.contains("N/A")) {
            throw new ErrorEnConversionDeDuracionException("No pude convertir la duracion, porque contiene un N/A");
        } else {
            this.duracionEnMinutos = 0;
        }
    } catch (Exception e) {
        this.duracionEnMinutos = 0;
    }
}

Con este enfoque, aseguras que cualquier problema específico con "N/A" en la duración sea tratado de manera adecuada con la excepción que creaste.

Espero que esta sugerencia te sea útil y te ayude a avanzar en tu proyecto. ¡Bons estudios!