Wenn die Ausnahme ausgelöst wird, wird die Ausführung der üblichen Methode eine steile nichtlineare Wendung machen. Abhängig davon, wie die Methode codiert wird, können Ausnahmen sogar dazu führen, dass die Methode vorzeitig zurückgeht. Dies ist ein Problem bei einigen Methoden. Wenn beispielsweise eine Methode ein Dateielement öffnet und schließt und dann beendet, möchten Sie nicht, dass der Code, der die Datei schließt, durch den Ausnahmebehandlungsmechanismus umgangen wird. Schließlich sind Schlüsselwörter für solche Unfälle ausgelegt.
Erstellen Sie endlich einen Codeblock. Dieser Codeblock wird ausgeführt, bevor ein weiterer Versuch/Catch angezeigt wird, nachdem ein Versuch/Catch -Block abgeschlossen ist. Schließlich wird Block unabhängig davon ausgeführt, ob eine Ausnahme ausgelöst wird oder nicht. Wenn die Ausnahme ausgelöst wird, wird schließlich auch ohne eine Fangklausel ausgeführt, die der Ausnahme entspricht. Eine Methode wird von einem Try/Catch -Block zum aufgerufenen Programm zurückgegeben, wenn es nach einer ungewöhnlichen Ausnahme oder einer expliziten Return -Anweisung aufgerufen wird, wird die endgültige Klausel weiterhin ausgeführt, bevor die Methode zurückgibt. Dies ist nützlich, wenn Sie das Dateihandle schließen und alle anderen Ressourcen befreien, die zu Beginn der Methode zugewiesen werden. Die endgültige Klausel ist optional, entweder mit oder ohne. Jede Versuchserklärung erfordert jedoch mindestens einen Fang oder schließlich Klausel.
Das folgende Beispiel zeigt 3 verschiedene Exit -Methoden. Jeder führt die endgültige Klausel aus:
// endlich vorhanden. System.out.println ("Proca's endgültig"); . "Procc ist endlich"); ();
In diesem Beispiel unterbricht Proca () den Versuch vorzeitig, indem er eine Ausnahme auswirft. Die endgültige Klausel wird beim Beenden ausgeführt. Die Procb () -Se -Anweisung beendet eine Rückgabeerklärung. Die endgültige Klausel wird vor der Rückgabe von Procb () ausgeführt. In Procc () wird die Anweisung für Try normal ohne Fehler ausgeführt. Schließlich wird Block jedoch weiterhin ausgeführt.
HINWEIS: Wenn der schließlich in Verbindung mit einem Versuch verwendet wird, wird der endgültige Block vor dem Ende des Versuchs ausgeführt.
Das Folgende ist die Ausgabe, die im obigen Programm erzeugt wird:
In Procaprocas endgültiger Ausnahme erwischte Procbprocbs endlich in ProccProccs endlich