до Java 1.6 Силно се препоръчва да напишете блок finally, за да затворите ресурси, които са отворени като част от блока try.
При опит с ресурси е, че каквито и ресурси да се отворят в частта от блока за опит, ще се затвори автоматично, след като програмата достигне до края на блока за опит нормално или необичайно. Не е необходимо ресурсите да се затварят изрично.
Пример try-catch-finally към try-with-resource
Проста програма за показване на функционалността на try-catch-finally
try-catch-finally
PrintWriter writer = null; try{ writer = new PrintWriter(new File("file.txt")); write.println("Hello Himanshu !!"); } catch(FileNotFoundException e){ } finally{ if(writer != null){ writer.close(); }
опитайте-с-ресурс
try (PrintWriter writer = new PrintWriter(new File(“test.txt”))) { writer.println(“Hello World”); }
Персонализиран ресурс с възможност за автоматично затваряне или затваряне
Персонализираният ресурс работи с try-with-resource само ако класът трябва да имплементира Closeable или AutoCloseable интерфейс.
Ресурс
public class MyResource implements Closeable { public MyResource() { System.out.printf("Constructor -- MyResource"); } public void doSomething() { System.out.printf("Method do something -- MyResource"); } @Override public void close() throws IOException { System.out.printf("Close -- MyResource"); } }
Код
try (MyResource myResource = new MyResource()) { myResource.doSomething(); } catch (IOException e) { }
Забележка:- try-with-resource все още има catch и finally block, които работят като традиционен try block;
Забележка:- Множество ресурси, разделени вътре в блока за опит с “;”;
Пример:-
try (Scanner scanner = new Scanner(new File(“file1.txt”)); PrintWriter writer = new PrintWriter(new File(“file2.txt”))) { while (scanner.hasNext()) { writer.print(scanner.nextLine()); } }
Пример:- опитайте (R1; R2; R3);
Да се свържем в Github, LinkedIn, StackOverflow и моя Уебсайт.