Repaso
English
Java CoreIntermedioJV-16

¿Para qué sirve try-with-resources?

Opciones

  1. Probar varios recursos en paralelo hasta que uno funcione
  2. Cerrar recursos automáticamente, incluso tras un error (Opción correcta)
  3. Reintentar una operación una y otra vez hasta que funcione
  4. Asignar más memoria al recurso cuando haga falta

Respuesta

Cerrar automáticamente los recursos (archivos, conexiones) al final del bloque, aunque ocurra una excepción

Por qué

Los recursos como archivos, conexiones a bases de datos y sockets deben cerrarse o se produce una fuga. La forma antigua necesitaba un bloque finally con otro try/catch.

Con try (Resource r = ...) { ... }, Java llama a r.close() automáticamente cuando termina el bloque, de forma normal o por una excepción. El recurso debe implementar AutoCloseable. Los recursos se cierran en orden inverso al de creación.

try (BufferedReader br = new BufferedReader(new FileReader("data.txt"))) {
    System.out.println(br.readLine());
}   // br.close() is called automatically

Recuerda

Ábrelo en los paréntesis del try y Java lo cierra por ti.

Términos clave

Practica esta pregunta en Repaso