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

Haga lo que hicimos en aula:

no entiendi muy bien por que lo tengo que extender de RuntimeException si Throwable es la madre y puede acceder a las hijas

package com.alura.screenmatch.excepcion;

public class ErrorEnConversionDeDuracionException extends RuntimeException {
private String mensaje;

public ErrorEnConversionDeDuracionException(String mensaje) {
    this.mensaje = mensaje;
}

@Override
public String getMessage() {
    return this.mensaje;
}

}

1 respuesta

Hola Lucas, espero que estés bien

Entiendo tu confusión sobre por qué extender RuntimeException en lugar de Throwable. Aquí te explico un poco más sobre esto:

Throwable es la clase madre de todas las excepciones y errores en Java. Sin embargo, en la práctica, no se suele extender directamente de Throwable porque Java proporciona dos subclases más específicas: Exception y Error. Exception es la clase base para todas las excepciones que un programa puede querer capturar y manejar, mientras que Error es para problemas más serios que normalmente no se deben manejar en el código.

Dentro de Exception, tenemos RuntimeException, que es una clase especial para excepciones que pueden ocurrir durante la ejecución del programa y que no necesitan ser declaradas en un throws ni ser capturadas obligatoriamente. Esto es útil para excepciones que indican errores de programación, como intentar acceder a un índice fuera de los límites de un array, o en tu caso, un error en la conversión de duración.

Al extender RuntimeException, estás indicando que ErrorEnConversionDeDuracionException es una excepción que puede ocurrir en tiempo de ejecución y que no es necesario forzar al programador a manejarla explícitamente. Esto hace que el código sea más limpio y enfocado en los errores que realmente se espera manejar.

Un ejemplo práctico sería:

if (miTituloOmdb.runtime().contains("N/A")) {
    throw new ErrorEnConversionDeDuracionException("No pude convertir la duracion, porque contiene un N/A");
}

Aquí, si el tiempo de ejecución contiene "N/A", lanzas tu excepción personalizada. Como es una RuntimeException, no necesitas declarar que el método Titulo lanza esta excepción, lo que simplifica el manejo de errores en tu código.

Espero que esta explicación te ayude a entender mejor por qué se utiliza RuntimeException en este caso. ¡Espero haber ayudado y buenos estudios!