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.