¿El bloque finally siempre se ejecuta? Trampas de JVM y System.exit()
¡Hola a todos! Soy nuevo en Java y estoy tratando de entender el manejo de excepciones. Me confunde el bloque `finally`. En los libros dicen que siempre se ejecuta, independientemente de si hubo una excepción o no. Pero encontré algunos ejemplos donde parece que no es así.
Por ejemplo, este código:
```java
public class FinallyTest {
public static void main(String[] args) {
try {
System.out.println("En try");
System.exit(0);
} catch (Exception e) {
System.out.println("En catch");
} finally {
System.out.println("En finally");
}
}
}
```
Esperaba ver "En finally", pero el programa simplemente terminó sin esa salida. ¿Por qué? `System.exit(0)` no es una excepción, es una terminación normal.
Y otro ejemplo. Si en el bloque `try` hay un `return`, ¿el `finally` igual se ejecutará? He oído que sí, pero quiero asegurarme. ¿Y qué pasa si en `finally` también se lanza una excepción? ¿Sobrescribirá la excepción del `try`?
No answers yet.
Inicia sesión para dejar una respuesta