usar - Intente con recursos y devuelva declaraciones en java
tipos de variables en java ejemplos (2)
Me pregunto si poner una declaración de retorno dentro de un bloque de probar con recursos impide que el recurso se cierre automáticamente.
try(Connection conn = ...) {
return conn.createStatement().execute("...");
}
Si escribo algo así, ¿se cerrará la conexión ? En la documentación de Oracle se afirma que:
La declaración try-with-resources asegura que cada recurso se cierre al final de la declaración.
¿Qué sucede si nunca se llega al final de la declaración debido a una declaración de devolución?
Basado en el tutorial de Oracle , "[el recurso] se cerrará independientemente de si la instrucción de prueba se completa normalmente o abruptamente". Se define abruptly
partir de una excepción.
Volver al interior del try
es un ejemplo de finalización abrupta, como se define en JLS 14.1 .
El recurso se cerrará automáticamente (incluso con una declaración de return
) ya que implementa la interfaz de AutoCloseable
. Aquí hay un ejemplo que da como resultado "cerrado con éxito":
public class Main {
public static void main(String[] args) {
try (Foobar foobar = new Foobar()) {
return;
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Foobar implements AutoCloseable {
@Override
public void close() throws Exception {
System.out.println("closed successfully");
}
}