1
respuesta

Por qué no me sale el StackOverflowError:

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

Me preguntaba porqué no me aprecía como tal el error "StackOverflowError" explicitamente, como en el ejemplo que utilizó el profesor en el curso. Además quería que me aclararn el por qué imprimía "del metodo 2" e "Inicio del metodo 2" y no los otros mensajes.

1 respuesta

Hola César,

El error "StackOverflowError" ocurre cuando la pila de llamadas de un programa Java se llena. En tu caso, esto sucede porque el método "metodo2()" se llama a sí mismo infinitamente, lo que se conoce como recursividad infinita. Este es un caso clásico que genera un "StackOverflowError".

Ahora, en tu caso, no estás viendo el "StackOverflowError" explícitamente porque estás atrapando y manejando las excepciones "ArithmeticException" y "NullPointerException" en tu bloque try-catch, pero no estás atrapando ni manejando el "StackOverflowError".

Si quisieras ver el "StackOverflowError" explícitamente, podrías modificar tu bloque try-catch para atrapar también el "StackOverflowError", así:

try{
    metodo1();
} catch(ArithmeticException | NullPointerException | StackOverflowError ex) {
    String msg = ex.getMessage(); 
    System.out.println("Exception " + msg);
    ex.printStackTrace();
}

En cuanto a tu segunda pregunta, los mensajes "Inicio del metodo 2" y "Fin del metodo 2" se imprimen porque son las primeras y últimas líneas de código que se ejecutan antes de que ocurra el "StackOverflowError". Como el "StackOverflowError" ocurre dentro del método "metodo2()", la ejecución del programa se detiene antes de que pueda imprimir cualquier otro mensaje.

Espero que esta explicación te ayude. 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.