¿ Alguien sabe porque el programa no completa su ejecución cuando tengo el try cath lejos de el lugar donde se produce una excepción ?
En este caso el ciclo for si se completa a pesar de la excepción
public class Flujo {
public static void main(String[] args) {
System.out.println("Inicio del main");
metodo1();
System.out.println("Fin del main");
}
private static void metodo1() {
System.out.println("Inicio del metodo1");
metodo2();
System.out.println("Fin del metodo1");
}
private static void metodo2() {
System.out.println("Inicio del metodo2");
for(int i = 1; i <= 5; i++) {
System.out.println(i);
try {
int a = i / 0;
}catch(ArithmeticException ex){
System.out.println("ArithmeticException");
String msg = ex.getMessage();
System.out.println("ArithmeticException " + msg);
ex.printStackTrace();
}
}
System.out.println("Fin del metodo2");
}
}
en este otro caso simplemente la ejecución llega hasta donde el iterado del for vale 1, y después solo esta el mensaje de que main si finalizo
public class Flujo {
public static void main(String[] args) {
System.out.println("Inicio del main");
try {
metodo1();
}catch(ArithmeticException ex){
System.out.println("ArithmeticException");
String msg = ex.getMessage();
System.out.println("ArithmeticException " + msg);
ex.printStackTrace();
}
System.out.println("Fin del main");
}
private static void metodo1() {
System.out.println("Inicio del metodo1");
metodo2();
System.out.println("Fin del metodo1");
}
private static void metodo2() {
System.out.println("Inicio del metodo2");
for(int i = 1; i <= 5; i++) {
System.out.println(i);
int a = i / 0;
}
System.out.println("Fin del metodo2");
}
}