Die Try-Catch-finally-Blöcke in Java

Um ein Java-Programm so robust wie möglich zu machen, muss es in der Lage sein, mit Ausnahmen umzugehen. Der Compiler leistet seinen Beitrag, indem er es Ihnen nicht erlaubt, ein Programm zu kompilieren, bis es syntaktisch korrekt ist, und er kann auch auf überprüfte Ausnahmen hinweisen, die behandelt werden müssen. Die Ausnahmen, die wahrscheinlich die meisten Kopfschmerzen verursachen, treten jedoch auf, sobald das Programm ausgeführt wird. Um diese Ausnahmen zu umgehen, stellt die Java-Sprache die try-catch-finally-Blöcke zur Verfügung.

Der Versuch Block

Das

Versuchen
Block umschließt alle Anweisungen, die möglicherweise zu einer Ausnahme führen. Zum Beispiel, wenn Sie Daten aus einer Datei mit der Taste lesen
FileReader
Klasse, es wird erwartet, dass Sie die behandeln
IOExceptions
im Zusammenhang mit der Verwendung von a
FileReader
Objekt, zum Beispiel,
FileNotFoundException
und
IOException
. Um dies sicherzustellen, können Sie die Anweisungen platzieren, die sich mit dem Erstellen und Verwenden von befassen
FileReader
Objekt in einem
Versuchen
block: Der Code ist jedoch unvollständig, da wir zum Behandeln der Ausnahme einen Ort benötigen, an dem er abgefangen werden kann. Dies geschieht in der

catch block.Der catch Block

Das

Fang
Block (e) bieten einen Ort, an dem die von den Anweisungen in a ausgelöste Ausnahme behandelt werden kann
Versuchen
Block. Das
Fang
Block wird direkt nach dem definiert
Versuchen
Block. Es muss den Typ der behandelten Ausnahme angeben. Zum Beispiel die
FileReader
Das im obigen Code definierte Objekt kann a auslösen
FileNotFoundException
oder ein
IOException
. Wir können zwei angeben
Fang
Blöcke, um diese beiden Ausnahmen zu behandeln:
FileNotFoundExceptioncatch
blockieren wir könnten Code platzieren, um den Benutzer zu bitten, die Datei für uns zu finden und dann zu versuchen, die Datei erneut zu lesen. In dem
IOException
catch block, wir können den I / O-Fehler einfach an den Benutzer weitergeben und ihn bitten, etwas anderes zu versuchen. In beiden Fällen haben wir eine Möglichkeit bereitgestellt, mit der das Programm eine Ausnahme abfangen und sie auf kontrollierte Weise behandeln kann.
In Java SE 7 konnten mehrere Ausnahmen in einer behandelt werden
Fang
Block. Wollten wir den Code in den beiden platzieren
Fang
Die obigen Blöcke waren genau das Gleiche. Stattdessen konnten wir den Code wie folgt schreiben: Um die Ressourcen zu schonen, können wir einen finally-Block hinzufügen. Schließlich möchten wir die Datei, die wir gelesen haben, freigeben, sobald wir fertig sind.

Der Endgültige Block

Die Anweisungen im finally-Block werden immer ausgeführt. Dies ist nützlich, um Ressourcen zu bereinigen, wenn der Try-Block ohne Ausnahme ausgeführt wird und in den Fällen, in denen es eine Ausnahme gibt. In beiden Fällen können wir die von uns verwendete Datei schließen. 

Der finally-Block wird direkt nach dem letzten catch-Block angezeigt: