Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

Java Try-With-Resources meistern: Automatisches Ressourcenmanagement erklärt

Java Try-With-Resources meistern

Erkunden Sie, wie Javas try-with-resources Statement Ressourcenhandling vereinfacht, Leaks verhindert und Code-Lesbarkeit verbessert.

Das try‑with‑resources-Konstrukt garantiert, dass alle Ressourcen, die innerhalb seiner Klammern deklariert sind, automatisch geschlossen werden, wenn der Block verlassen wird – sei es normal oder abrupt. Eine Ressource ist jedes Objekt, das AutoCloseable oder Closeable implementiert.

Seine Syntax ist:

try (ResourceType resource = new ResourceType(...)) { // Ressource nutzen } catch (ExceptionType e) { // Exceptions behandeln } 

Um es zu nutzen:

  1. Instanziieren Sie die Ressource innerhalb der try-Klausel.
  2. Deklarieren Sie Exception-Handling für Fehler, die während Nutzung oder Schließung auftreten können.
Hinweis: Nur Objekte, die AutoCloseable implementieren, können automatisch verwaltet werden.


Beispiel 1: Datei sicher lesen

import java.io.*; public class Haupt { public static void main(String[] args) { try (BufferedReader br = new BufferedReader(new FileReader("test.txt"))) { String line; while ((line = br.readLine()) != null) { System.out.println("Line =>" + line); } } catch (IOException e) { System.out.println("IOException in try‑with‑resources Block =>" + e.getMessage()); } } } 

Ausgabe wenn test.txt fehlt:

IOException in try‑with‑resources Block =>test.txt (No such file or directory)

Ausgabe wenn die Datei existiert:

Line =>test line

Hier wird der BufferedReader nach dem Block automatisch geschlossen, wodurch ein finally-Block überflüssig wird.


Unterdrückte Exceptions

Wenn sowohl der try-Block als auch das Ressourcen-Schließen Exceptions werfen, hat die Exception aus dem try-Block Vorrang, während die andere unterdrückt wird. Sie können unterdrückte Exceptions via Throwable.getSuppressed() abrufen:

catch (IOException e) { System.out.println("Geworfene Exception =>" + e.getMessage()); for (Throwable t : e.getSuppressed()) { System.out.println("Unterdrückte Exception =>" + t); } } 

Warum Try-With-Resources verwenden?

1. Manuelles Cleanup eliminieren

Vor Java 7 war ein finally-Block zwingend, um Ressourcen zu schließen. Das fügte Boilerplate und Potenzial für verschachtelte try‑catch im finally hinzu, falls das Schließen selbst eine Exception warf. Mit try-with-resources ist Cleanup implizit:

BufferedReader br = null; try { br = new BufferedReader(new FileReader("test.txt")); // br nutzen } catch (IOException e) { // behandeln } finally { if (br != null) { try { br.close(); } catch (IOException ignored) {} } } 

Das obige Muster ist verbose und fehleranfälliger im Vergleich zu:

try (BufferedReader br = new BufferedReader(new FileReader("test.txt"))) { // br nutzen } 

2. Mehrere Ressourcen in einem Statement

Deklarieren Sie mehrere Ressourcen, durch Semikolons getrennt. Sie werden in umgekehrter Deklarationsreihenfolge geschlossen.

try (Scanner scanner = new Scanner(new File("testRead.txt")); PrintWriter writer = new PrintWriter(new File("testWrite.txt"))) { while (scanner.hasNext()) { writer.print(scanner.nextLine()); } } 

3. Java 9 Verbesserung

Java 9 lockerte die Anforderung, dass Ressourcen lokal deklariert werden müssen. Sie können nun eine existierende Variable wiederverwenden:

Scanner scanner = new Scanner(new File("testRead.txt")); try (scanner) { // Code } 

Dieses Feature verbessert Lesbarkeit, wenn dieselbe Ressource an anderer Stelle benötigt wird.


Für tiefere Einblicke verweisen Sie auf die offizielle AutoCloseable Dokumentation und die Java 9 JEP 326 Release Notes.

Java

  1. Java Operatoren meistern: Typen, Syntax und praktische Beispiele
  2. Java Kommentare: Typen, Verwendung und Best Practices
  3. Java if…else meistern: Kontrollfluss erklärt
  4. Java Enhanced For-Schleife meistern: Syntax, Beispiele und Best Practices
  5. Java Strings meistern: Erstellung, Methoden und Best Practices
  6. Java-Schnittstellen meistern: Konzepte, Implementierung und Best Practices
  7. Java anonyme innere Klassen meistern: Definition, Syntax und praktische Beispiele
  8. Java Annotations erklärt: Typen, Platzierung und praktische Beispiele
  9. Java Assertions: Praktischer Leitfaden zur Fehlererkennung und Code-Reliabilität
  10. Java Vector verstehen: Verwendung, Funktionen und Vergleich mit ArrayList