¿Qué imprime esto?
static int f() {
try {
return 1;
} finally {
System.out.println("finally");
}
}
System.out.println(f());Opciones
- 1
- finally, y luego 1 (Opción correcta)
- 1, y luego finally
- solo finally
Respuesta
finally, y luego 1
Por qué
Un bloque finally se ejecuta siempre, aunque el bloque try ejecute return. Java primero evalúa el valor de retorno (1), luego ejecuta finally (que imprime "finally") y después devuelve 1 a quien llamó.
Así que la salida es finally en una línea y 1 en la siguiente.
No pongas return dentro de finally: reemplazaría el resultado original e incluso ocultaría excepciones.
Recuerda
finally siempre se ejecuta, incluso después de return.