Solucionado (ver solución)
Solucionado
(ver solución)
1
respuesta

[Duda] mensajes en las Excepciones "msg" y "ex."

Entiendo que se puede colocar un mensaje a la excepcion y se debe enviar a Runtime. Pero creo que no entiendo bien esta parte del código respecto a:

  1. lo que hace el ex. ¿Qué es? ¿De dónde viene?

  2. ¿Aquí no se estaría redefiniendo "msg" y pidiendo a la vez el mensaje que se envió? String msg = ex.getMessage(); entonces el mensaje se coloca solo al momento de lanzar la exception?

  3. y por último este metodo ex.printStackTrace(); ¿sería para ver más detalladamente el problema y todo lo que se recorrió hasta llegar a él?

Gracias de antemano

Acá está todo el código:

public class MiExcepcion extends RuntimeException {
        public MiExcepcion (String msg) {
            super(msg);
        }
}

try {
        metodo1();
} catch(ArithmeticException | NullPointerException | MiExcepcion ex) {
        String msg = ex.getMessage();

        System.out.println("Exception " + msg);
        ex.printStackTrace();
}
throw new MiExcepcion("Surgió un error");
try {
        metodo1();
} catch(ArithmeticException | NullPointerException | MiExcepcion ex) {
        String msg = ex.getMessage();

        System.out.println("Exception " + msg);
        ex.printStackTrace();
}
1 respuesta
solución!

Hola Andrés, espero que estés bien.

La clase una clase MiExcepcion que extiende la clase RuntimeException, el constructor de MiExcepcion, se le pasa un mensaje (msg) al constructor de la clase base (RuntimeException) utilizando super(msg). Esto significa que cuando creas una instancia de MiExcepcion y proporcionas un mensaje, ese mensaje se pasará a la clase base y se almacenará en la excepción.

El bloque try-catch, se intenta ejecutar el método metodo1(). Si ocurre alguna de las excepciones especificadas en el bloque catch (es decir, ArithmeticException, NullPointerException o MiExcepcion), se captura esa excepción en la variable ex. Luego se obtiene el mensaje de esa excepción usando ex.getMessage().

Sí, en este punto, el mensaje de la excepción ya está almacenado en la instancia de excepción, y no se está redefiniendo. La llamada ex.getMessage() simplemente recupera ese mensaje.

Después, se imprime "Exception" seguido del mensaje de la excepción usando System.out.println("Exception " + msg);. Además, ex.printStackTrace() se llama para imprimir la traza de la excepción. Esto mostrará la secuencia de llamadas de métodos que llevaron a la excepción, lo que puede ser útil para depurar problemas.

En resumen, el código captura y maneja excepciones específicas (ArithmeticException, NullPointerException y MiExcepcion), muestra mensajes y trazas de excepciones en caso de que ocurran, y también lanza una instancia personalizada de la excepción MiExcepcion con un mensaje específico.

Mucho éxito en todo lo que te propongas y si tienes alguna duda aquí estaremos para apoyarte.

¡Vamos juntos!

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