Saltar al contenido

¿Qué es la propagación de excepciones?

Nuestro grupo de trabajo ha estado mucho tiempo investigando para dar resolución a tu interrogante, te compartimos la respuesta de modo que esperamos resultarte de gran apoyo.

Solución:

Está explicado, sorprendentemente, en la página del tutorial de Java sobre excepciones.

Una excepción se propaga de un método a otro, subiendo por la pila de llamadas, hasta que se detecta. Así que si a() llamadas b()que llama c()que llama d()y si d() lanza una excepción, la excepción se propagará de d a c a b a a, a menos que uno de estos métodos atrape la excepción.

Respuesta corta : Las excepciones no detectadas se propagan en la pila de llamadas hasta que la pila se vacía, esta propagación se denomina Propagación de excepciones.

Respuesta larga :
Después de que un método lanza una excepción, el sistema de tiempo de ejecución busca en la pila de llamadas un método que contenga un bloque de código (controlador de excepciones) que pueda manejar la excepción. La búsqueda comienza con el método en el que ocurrió el error y continúa a través de la pila de llamadas en el orden inverso al que se llamaron los métodos. Cuando se encuentra un controlador adecuado, el sistema de tiempo de ejecución pasa la excepción al controlador. Además, hay un punto digno de mención:

Digamos que tenemos una cadena de métodos donde method3() llama a method2() y method2() llama a method1(). Así que cuando

1) Se produce una excepción en el método 3() y en el método 3() no tenemos ningún controlador de excepciones.

2) La excepción no detectada se propagará hacia abajo en la pila, es decir, verificará el controlador de excepciones apropiado en el método 2().

3) Nuevamente en el método 2, si no tenemos ningún controlador de excepciones, nuevamente la excepción se propaga hacia abajo al método 1 () donde encuentra el controlador de excepciones.

ingrese la descripción de la imagen aquí

Ejemplo:

 class ExceptionPropagation

  void method3()
    int result = 100 / 0;  //Exception Generated
  

  void method2()
    method3();
  

  void method1()
    try
  method2();
     catch(Exception e)
  System.out.println("Exception is handled here");
    
  

  public static void main(String args[])
  ExceptionPropagation obj=new ExceptionPropagation();
  obj.method1();
  System.out.println("Continue with Normal Flow...");
  

Producción :

La excepción se maneja aquí

Continuar con flujo normal…

Solo se propagan las excepciones no comprobadas. Las excepciones comprobadas arrojan un error de compilación

[1] http://docs.oracle.com/javase/tutorial/essential/exceptions/definition.html

[2] http://www.c4learn.com/java/java-exception-propagation/

Cada vez que se llama a los métodos, se forma una pila y primero se lanza una excepción desde la parte superior de la pila y, si no se detecta, comienza a bajar de la pila a los métodos anteriores hasta que no se detecta. Si la excepción no se detecta incluso después de llegar al final de la pila, se propaga a JVM y el programa finaliza.

las excepciones no verificadas se propagan automáticamente en java. Programa >

public class ExceptionTest 
public static void main(String[] args) 
    method1();
    System.out.println("after calling m()");


static void method1() 
    method2();


static void method2() 
    method3();


static void method3() 
    throw new NullPointerException();



Para propagar las excepciones marcadas, el método debe lanzar una excepción usando la palabra clave throws. Programa >

public class ExceptionTest 
public static void main(String[] args)
                throws FileNotFoundException 
        method1();
        System.out.println("after calling m()");


static void method1() throws FileNotFoundException
        method2();


static void method2() throws FileNotFoundException
        method3();


static void method3() throws FileNotFoundException
        throw new FileNotFoundException();



Propagando una excepción no verificada (NullPointerException) >
Propagando una excepción no verificada (NullPointerException)

Propagando la excepción marcada (FileNotFoundException) usando la palabra clave throws >
Propagando la excepción marcada (FileNotFoundException) usando la palabra clave throws

De: http://www.javamadesoeasy.com/2015/05/exception-propagation-in-java-deep.html

Sección de Reseñas y Valoraciones

Si crees que te ha sido de ayuda nuestro post, agradeceríamos que lo compartas con más programadores y nos ayudes a extender este contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *