Repaso
English
Java CoreIntermedioJV-23

¿Qué imprime esto?

static int f() {
    try {
        return 1;
    } finally {
        System.out.println("finally");
    }
}
System.out.println(f());

Opciones

  1. 1
  2. finally, y luego 1 (Opción correcta)
  3. 1, y luego finally
  4. 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.

Términos clave

Practica esta pregunta en Repaso