3
respuestas

Controlando errores por tipo.

Buenas tardes!

tengo una duda, del porque a mi no me atrapa las dos excepciones,??? tal como lo muestra el video explicativo. Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Solo muestra 1 excepción. Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

y tengo el siguiente codigo.

public class Flujo {

    public static void main(String[] args) {
        System.out.println("Inicio de main");
        metodo1();
        System.out.println("Fin de main");
    }

    private static void metodo1() {
        System.out.println("Inicio de metodo1");
        metodo2();
        System.out.println("Fin de metodo1");
    }

    private static void metodo2() {
        System.out.println("Inicio de metodo2");
        //Cuenta cuenta = new Cuenta();
        //throw new ArithmeticException("Surgió un error");
        for(int i =1; i <= 5; i++) {
            System.out.println(i);
            try {//Intenta esto

                if(i==3) {
                    int num = 0;
                    int resultado = i/num;
                    System.out.println(resultado);
                }

                String test = null;
                System.out.println(test.toString());

            }catch(ArithmeticException | NullPointerException exception) {
                System.out.println("Atrapo Excepcion");
                System.out.println(exception.getMessage());
                exception.printStackTrace();
            }


            }
        System.out.println("Fin de metodo2");
    }

}

por lo que requiero de su apoyo para saber donde esta la falla??

3 respuestas

¡Hola Hector! ¡Deseo que estés bien!

¡Felicitaciones por tu aprendizaje!

Probe tu codigo y te digo que esta correcto, tu ressultado en la consola es diferente al del profesor, pero no quiere decir que tu codigo esta mal, por el contrario esta muy bien hecho!

¡Ahora bien! te explico un poco lo que sucede cuando vi el debug de tu codico: el entra en el "if" y ejecuta el siguiente bloco:

if(i==3) {
                    int num = 0;
                    int resultado = i/num;
                    System.out.println(resultado);
                }

Ahí cuando intenta ejecutar esta instrucción: int resultado = i/num; que es una división por cero, el sale inmediatemete del bloco try{ } sin leer las siguientes lineas que tenia las cuales eran:

    String test = null;
    System.out.println(test.toString());

Cayendo directamente en el catch{ } y por esta razón solo muestra la siguiente Exception

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

a la verdad es porque ni siquiera leyo las ultimas dos lineas que estaban despues del bloco if dentro del try{ } fue directo para el cath{ }

¡Te deseo mucho éxito en tus estudios! y recuerda que aquí estaremos para apoyarte!

¡Vamos juntos!

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

hola LuzDalis entiendo lo que comenta, agradezco su valioso apoyo, sin embargo lo que me causo la pregunta, fue que en el video explicativo, al correr el codigo, atrapa las 2 excepciones, es como si el codigo del video explicativo si puede leer las otras dos líneas. específicamente del la 3era iteracion, por lo que me causo duda . podrian revisar el video para que vean como si lanza ese mismo codigo las 2 excepciones.

¡Hola Hector! ¡Deseo que estés bien!

Si entiendo lo que dices y tambien vi el resultado del profesor en el aula, de hecho a mi me da el mismo resultado que a ti y es precisamente por la razón que te explique anteriormente, el codigo es ese mismo solo que nuestro resultado es diferente, más no quiere decir que esta fallando, de echo esta correcto, es posible que se deba a las versiones que estamos utilizando.

¡Te deseo mucho éxito en tus estudios! y recuerda que aquí estaremos para apoyarte!

¡Vamos juntos!

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