Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
1
respuesta

[Duda] try catch en main

¿ 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");
    }

}
1 respuesta
solución!

¡Hola Gerardo!

La razón por la que el programa no completa su ejecución cuando el try-catch está lejos del lugar donde se produce una excepción es porque el catch solo maneja la excepción dentro del bloque try-catch. En el segundo ejemplo que compartiste, el try-catch está en el método main, por lo que solo maneja la excepción que se produce en el método2 y no en el ciclo for.

En el primer ejemplo, el try-catch está dentro del ciclo for, por lo que maneja la excepción que se produce en cada iteración del ciclo. Es por eso que el ciclo for se completa a pesar de la excepción.

Espero que esto resuelva tu duda. ¡Buenos estudios!

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