Ich habe zufällig festgestellt, dass dies der Fall ist. Siehe folgendes Beispiel:
%Vor%Es druckt:
versuche es Geschlossen.
Aufgenommen
Endlich
Die Try-with-resources wurden entwickelt, um die unordentlichen Endabschnitte mit Null-Checks zu vermeiden und um die ausgelaufenen Ressourcen zu vermeiden. Warum sind die Ressourcen VOR dem Fangbereich geschlossen? Was ist der Grund / die Idee / Begrenzung dahinter?
Die Antwort finden Sie in JLS §14.20 .3.2 ; Die wichtigsten Teile sind die letzten zwei Absätze, insbesondere der letzte Satz des vorletzten Absatzes (ich habe es betont):
Eine
try-with-resources
Anweisung mit mindestens einercatch
Klausel und / oder einerfinally
Klausel heißt eine erweitertetry-with-resources
Anweisung.Die Bedeutung einer erweiterten
%Vor%try-with-resources
-Anweisung:wird durch die folgende Übersetzung in eine grundlegende
%Vor%try-with-resources
-Anweisung angegeben, die in einertry-catch
odertry-finally
odertry-catch-finally
-Anweisung verschachtelt ist:Der Effekt der Übersetzung besteht darin, die Ressourcenspezifikation "innerhalb" der
try
-Anweisung zu setzen. Dies ermöglicht einercatch
-Klausel einer erweitertentry-with-resources
-Anweisung, aufgrund der automatischen Initialisierung oder des Schließens einer Ressource eine Ausnahme abzufangen.Außerdem wurden alle Ressourcen bis zur Ausführung des Blocks
finally
geschlossen (oder versucht, geschlossen zu werden), entsprechend der Absicht des Schlüsselwortsfinally
.
Tags und Links java try-with-resources autocloseable