Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

Duda de aula 5 Aplicando excepciones clase 03 Extendiendo una excepción

Estimados instructores, creo estoy un poco confundido, tengo una duda espero puedan ayudarme.

Tengo lo mismo que el profe Diego pero la salida es en diferente orden, no se si se considera que se le esta dando tratamiento a la excepción. Les muestro el codigo y la salida.

public class Test {

public static void main(String[] args) {
    System.out.println("Inicio del main");
    try {
        metodo1();      //*******CHECAR EN LA CLASE MiException CUANDO EXTIENDE DE RUNTIME EXCEPTION******//
    } catch (Exception e) {     //MiExcepcion fue lanzada y atrapada con EXCEPTION de manera generica
                                //es decir, atrapa los 3 tipos de excepciones
        e.printStackTrace();    //tambien puede ser throw new RuntimeException(e);
    }
    System.out.println("Fin del main");     //AQUI SE DEBE USA TRY CATCH PARA QUE COMPILE CON RUNTIME EXCEPTION
}
public static void metodo1() throws MiException{   //Metodo 1 declara tratamiento con Exception
    System.out.println("Inicio de metodo1");       //es verificada (Checked)
    metodo2();
    System.out.println("Fin de metodo1");
}
public static void metodo2() throws MiException {
    System.out.println("Inicio de metodo2");
    throw new MiException("Mi excepcion fue lanzada");

}

}

Y LA SALIDA ES: Inicio del main Inicio de metodo1 Inicio de metodo2 Fin del main MiException: Mi excepcion fue lanzada at Test.metodo2(Test.java:19) at Test.metodo1(Test.java:14) at Test.main(Test.java:6)

OTRAS DUDAS. *En el método 1 usamos try catch, pero alli no podemos usar throws MiException?? O solamente se usa try catch por ser el metodo main??

*En este codigo como esta en este momento no hay errores de verdad, por ejemplo una división entre cero, entonces la salida que manda Indica que se esta preparando para una posible excepción? la salida es:

MiException: Mi excepcion fue lanzada at Test.metodo2(Test.java:20) at Test.metodo1(Test.java:15) at Test.main(Test.java:6)

*Método 1 tambien puede lanzar la excepción o solamente la puede lanzar método 2 por estar abajo, gracias.

2 respuestas
solución!

Hola Edgar, espero que estés bien.

Gracias por compartir con nosotros, a medida que avancemos en el curso comprenderemos mejor las excepciones con este ejemplo.

Try/Catch lo utilizas cuando ya estás manejando la excepción y el throw lo usas cuando quieres pasar el manejo de la excepción a otra clase.

ArithmeticException es una clase base para las excepciones: DivideByZeroException, que se produce en división de enteros cuando el divisor es 0. Por ejemplo, al intentar dividir entre 10 y 0 se produce una DivideByZeroException excepción.

Ambos métodos (metodo1(); y metodo2();) deben manejar sus excepciones, pero hay una buena práctica para el manejo de errores y el instructor Diego lo explicará más adelante en el curso

Felicitaciones por tu aprendizaje , tu organización del estudio genera productividad y cuando compartes, enriquece nuestro conocimiento. 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.

Muchas gracias Adri.