2016-05-03 8 views
0

ich normalerweise geöffneten Dateien durch einen BufferedReader holen:Wird eine Datei mit newBufferedReader geöffnet, wenn eine Ausnahme auftritt?

Files.newBufferedReader(myPath).lines() 
    .doStuff() 
    .doMoreStuff(); 

Was passiert, wenn die Methode eine Ausnahme auslöst, wird der Leser mit einem Try-mit-Ressource automatisch wie geschlossen werden? Ich habe keine Referenz in den Dokumenten gefunden.

+1

Nein, ich denke nicht. Deshalb wurde vorgeschlagen, try-with-resource oder atleast try-cacth-finally zu verwenden. – Prashant

+0

Ich kann einfach nicht den Vorteil der Verwendung der Factory-Methode sehen, anstatt einfach einen neuen BufferedReader zu erstellen. Ich dachte mir, es wäre prägnanter, aber wenn man es in die Ausnahmebehandlung einfügt, unterscheidet es sich nicht von der Standardinitialisierung. – AdHominem

Antwort

2

Die Files.newBufferedReader ist nur eine Dienstprogramm/Factory-Methode, um eine BufferedReader für die Datei zu erstellen. Intern erstellt es schließlich einen new BufferedReader(), um den BufferedReader zu erstellen.

Sie müssten es also genauso behandeln, wie Sie den BufferedReader mit dem Operator new erstellen würden. Wenn Sie möchten, dass es am Ende des Testblocks automatisch geschlossen wird, müssten Sie das try-with-resource wie gewohnt verwenden, wenn Sie es mit dem Operator new erstellen müssten.

+0

Hmm ich sehe, aber eine Try-mit-Ressource würde in diesem Fall wirklich hässlich aussehen, da es ein Stream ist und ich den gesamten Stream in die try-with-Klausel aufnehmen müsste? – AdHominem

Verwandte Themen