¿El bloque finally siempre se ejecuta en Java? Analizando los matices
¡Hola a todos! Soy un desarrollador Java principiante y tengo confusión con el bloque finally. Leí que finally se ejecuta siempre, independientemente de si se lanza una excepción o no. Pero en la práctica me encontré con varias situaciones donde parece que no es así.
Aquí hay un ejemplo de código que escribí para probar:
```java
public class FinallyTest {
public static void main(String[] args) {
System.out.println("Resultado: " + testFinally());
}
public static int testFinally() {
try {
System.out.println("En el bloque try");
return 1;
} catch (Exception e) {
System.out.println("En el bloque catch");
return 2;
} finally {
System.out.println("En el bloque finally");
return 3; // Esto es lo que me confunde
}
}
}
```
Esperaba que el método devolviera 1 (de try), ¡pero devolvió 3! ¿Entonces finally sobrescribe el return? ¿O hay algo que no entiendo?
Además, escuché que si en