En Java, la declaración Try-with-resources es una declaración de prueba que declara uno o más recursos en ella. Un recurso es un objeto que debe cerrarse una vez que su programa termine de usarlo. Por ejemplo, un recurso de archivo o un recurso de conexión de socket. La instrucción try-with-resources garantiza que cada recurso se cierre al final de la ejecución de la instrucción. Si no cerramos los recursos, puede constituir una fuga de recursos y también el programa podría agotar los recursos disponibles para él.
Puede pasar cualquier objeto como recurso que implemente java.lang.AutoCloseable , que incluye todos los objetos que implementan java.io.Closeable.
Por esto, ahora no necesitamos agregar un bloque finalmente adicional solo para pasar las declaraciones de cierre de los recursos. Los recursos se cerrarán tan pronto como se ejecute el bloque try-catch.
Sintaxis: Try-with-resources
try(declare resources here) { // use resources } catch(FileNotFoundException e) { // exception handling }
Excepciones:
Cuando se trata de excepciones, hay una diferencia entre el bloque try-catch-finally y el bloque try-with-resources. Si se lanza una excepción tanto en el bloque try como en el bloque finalmente, el método devuelve la excepción lanzada en el bloque finalmente.
Para probar con recursos, si se lanza una excepción en un bloque de prueba y en una declaración de prueba con recursos, entonces el método devuelve la excepción lanzada en el bloque de prueba. Las excepciones lanzadas por try-with-resources se suprimen, es decir, podemos decir que el bloque try-with-resources lanza excepciones suprimidas.
Ahora, analicemos los dos escenarios posibles que se muestran a continuación como un ejemplo de la siguiente manera:
- Caso 1 : Recurso único
- Caso 2: Múltiples recursos
Ejemplo 1: probar con recursos con un único recurso
Java
// Java Program for try-with-resources // having single resource // Importing all input output classes import java.io.*; // Class class GFG { // Main driver method public static void main(String[] args) { // Try block to check for exceptions try ( // Creating an object of FileOutputStream // to write stream or raw data // Adding resource FileOutputStream fos = new FileOutputStream("gfgtextfile.txt")) { // Custom string input String text = "Hello World. This is my java program"; // Converting string to bytes byte arr[] = text.getBytes(); // Text written in the file fos.write(arr); } // Catch block to handle exceptions catch (Exception e) { // Display message for the occurred exception System.out.println(e); } // Display message for successful execution of // program System.out.println( "Resource are closed and message has been written into the gfgtextfile.txt"); } }
Producción:
Resource are closed and message has been written into the gfgtextfile.txt
Ejemplo 2: prueba con recursos que tiene múltiples recursos
Java
// Java program for try-with-resources // having multiple resources // Importing all input output classes import java.io.*; // Class class GFG { // Main driver method public static void main(String[] args) { // Try block to check for exceptions // Writing data to a file using FileOutputStream // by passing input file as a parameter try (FileOutputStream fos = new FileOutputStream("outputfile.txt"); // Adding resouce // Reading the stream of character from BufferedReader br = new BufferedReader( new FileReader("gfgtextfile.txt"))) { // Declaring a string holding the // stream content of the file String text; // Condition check using readLine() method // which holds true till there is content // in the input file while ((text = br.readLine()) != null) { // Reading from input file passed above // using getBytes() method byte arr[] = text.getBytes(); // String converted to bytes fos.write(arr); // Copying the content of passed input file // 'inputgfgtext' file to outputfile.txt } // Display message when // file is successfully copied System.out.println( "File content copied to another one."); } // Catch block to handle generic exceptions catch (Exception e) { // Display the exception on the // console window System.out.println(e); } // Display message for successful execution of the // program System.out.println( "Resource are closed and message has been written into the gfgtextfile.txt"); } }
Producción:
File content copied to another one. Resource are closed and message has been written into the gfgtextfile.txt
Publicación traducida automáticamente
Artículo escrito por yashgupta2808 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA