Estoy aprendiendo acerca de las excepciones en Java, y me enfrento a un error de compilación en este ejemplo:

public class FinallyExceptionExample {
    public static void main (String[] args) throws Exception {
        try {
            System.out.println("1");
            throw new Exception();
        } finally{
            System.out.println("3");
        }
        System.out.println("4");
    }
}

La excepción es la "declaración inalcanzable" para la línea:

System.out.println("4");

Me pregunto por qué recibo este error, normalmente después de que finalmente continuamos la ejecución del código.

1
zak zak 13 sep. 2018 a las 15:45

3 respuestas

La mejor respuesta

Una declaración finally no detecta las excepciones lanzadas en el bloque try. Solo las declaraciones catch pueden detectar excepciones.

Por lo tanto, System.out.println("4"); nunca se alcanza, ya que el bloque try siempre produce una excepción no detectada.

6
Eran 13 sep. 2018 a las 12:47

Lanzas una excepción sin atraparla. Esto resultará en la terminación anticipada de la ejecución del código y nunca llegará a la última línea.

0
Murat Karagöz 13 sep. 2018 a las 12:47

No atrapaste tu excepción. entonces se imprime 1, finalmente se ejecuta el bloque y luego se lanza la excepción. 4 nunca serán llamados

1
Arquillian 13 sep. 2018 a las 12:46