Die Anweisung von Java-Try-with-Resources soll die Verwaltung von Ressourcen wie Dateiströmen oder Datenbankverbindungen vereinfachen, die nach ihrer Verwendung geschlossen werden müssen. Diese Erklärung wurde in Java 7 als Teil der ARM -Funktion (Automatic Resource Block Management) eingeführt.
Um die Anweisung für Try-with-ressources zu verwenden, müssen Sie Ressourcenvariablen deklarieren, die das AutoCloseable
oder deren Subinter-Interface in der try
Klausel Closeable
implementieren. Diese Ressourcen werden am Ende der Anweisung automatisch geschlossen, unabhängig davon, ob der Codeblock normalerweise abgeschlossen ist oder eine Ausnahme ausgelöst wird.
Hier ist ein Beispiel dafür, wie man es benutzt:
<code class="java">try (FileInputStream fis = new FileInputStream("input.txt"); FileOutputStream fos = new FileOutputStream("output.txt")) { // Use the resources byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = fis.read(buffer)) != -1) { fos.write(buffer, 0, bytesRead); } } // fis and fos are automatically closed here</code>
In diesem Beispiel implementieren FileInputStream
und FileOutputStream
beide Closeable
, sodass sie innerhalb eines Try-with-Ressourcen-Blocks verwendet werden können. Sobald der Block endet, werden diese Streams automatisch geschlossen, sodass ein finally
ein Block für manuell geschlossen werden muss.
Die Anweisung mit Try-with-Resources kann jede Ressource verwalten, die die AutoCloseable
Schnittstelle implementiert. AutoCloseable
ist eine Basisschnittstelle in Java, die eine einzelne Methode close()
definiert, die automatisch aufgerufen wird, wenn die Ressource nicht mehr benötigt wird. Die Closeable
Schnittstelle erweitert sich AutoCloseable
und wird speziell für Ressourcen verwendet, die sich mit E/A -Operationen befassen.
Gemeinsame Arten von Ressourcen, die verwaltet werden können, umfassen:
FileInputStream
und FileOutputStream
, die zum Lesen und Schreiben von Dateien verwendet werden.Connection
, Statement
und ResultSet
-Objekte, die für Datenbankvorgänge verwendet werden.Socket
und ServerSocket
die für die Netzwerkkommunikation verwendet werden.AutoCloseable
implementiert und Ressourcen verwaltet, die geschlossen werden müssen. Durch die Implementierung AutoCloseable
Implementieren können Entwickler ihre eigenen Klassen erstellen, die innerhalb eines Try-with-Ressourcen-Blocks verwendet werden können, um die ordnungsgemäße Ressourcenreinigung sicherzustellen.
Die Aussage von Try-with-Resources verbessert die Lesbarkeit und Wartbarkeit der Code auf verschiedene Weise:
finally
Blocks beseitigt, um die Ressourcen manuell zu schließen. Dies führt zu weniger Code und weniger Zeilen, die aufrechterhalten werden müssen.finally
Block manchmal die in den try
Block geworfenen Ausnahmen maskieren oder beeinträchtigen. Try-with-Resources stellt sicher, dass die Ressourcen geschlossen werden, ohne Ausnahmen zu maskieren.Hier ist ein Beispiel zum Vergleich traditioneller und Try-with-Ressources-Ansätze:
Traditionell:
<code class="java">FileInputStream fis = null; try { fis = new FileInputStream("input.txt"); // Use fis } catch (IOException e) { // Handle exception } finally { if (fis != null) { try { fis.close(); } catch (IOException e) { // Handle exception from closing } } }</code>
Versuchen Sie mit Ressourcen:
<code class="java">try (FileInputStream fis = new FileInputStream("input.txt")) { // Use fis } // fis is automatically closed</code>
Letzteres ist viel klarer und verringert die Wahrscheinlichkeit, Ressourcen offen zu lassen.
Wenn Sie Try-with-Ressources in Java verwenden, ist es wichtig, Best Practices für die Ausnahmebehandlung zu befolgen, um die Robustheit und Klarheit Ihres Codes aufrechtzuerhalten:
<code class="java">try (FileInputStream fis = new FileInputStream("input.txt")) { // Use fis } catch (IOException e) { // Handle IOException } catch (Exception e) { // Handle other exceptions }</code>
getSuppressed()
zugreifen:<code class="java">try (FileInputStream fis = new FileInputStream("input.txt")) { // Use fis } catch (IOException e) { for (Throwable se : e.getSuppressed()) { // Handle suppressed exceptions } }</code>
<code class="java">try (FileInputStream fis = new FileInputStream("input.txt")) { // Use fis } catch (IOException e) { for (Throwable se : e.getSuppressed()) { // Handle suppressed exceptions } throw new CustomException("Failed to process file", e); }</code>
<code class="java">try (FileInputStream fis = new FileInputStream("input.txt")) { // Use fis } catch (IOException e) { logger.error("An error occurred while processing the file", e); for (Throwable se : e.getSuppressed()) { logger.error("Suppressed exception occurred", se); } }</code>
Durch die Befolgung dieser Praktiken stellen Sie sicher, dass Ihr Code mit Try-with-Ressources auf saubere und effektive Weise Ausnahmen übernimmt und sowohl seine Robustheit als auch die Wartbarkeit verbessert.
Das obige ist der detaillierte Inhalt vonWie benutze ich Javas Versuchserklärung für das automatische Ressourcenmanagement?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!