Der schließlich der Schlüssel in Java wird mit Versuch verwendet Beispiel, um zu veranschaulichen:
public class tryandfinallytest {public static void main (String [] args) Ausnahme {try {int a = testfinally (2); ) {int b = testfinally (1); b); ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: : :::::::::::::::::::::::::::::::::::: versuchen Sie den Umfang, ob das Programm eine Ausnahme oder eine andere Unterbrechung ausgelöst hat, der Inhalt von schließlich wird der Switch (i) ausgeführt (i) {Fall 1: ++ i; // Das Programm endet normalerweise Fall 2: "Ausnahme in Test"); ("Endlich, wenn ich ="+Flagge);
Die Ausführungsergebnisse sind wie folgt
Schließlich kommt es, wenn ich = 2Final kommt, wenn i = 1 Das Ergebnis kehrte normal zurück.
Das Ergebnis zeigt, dass der endgültige Block immer ausgeführt wird, egal wie die obige Situation ist.
Im Vergleich zu anderen Sprachmodellen ist das endgültige Schlüsselwort die beste Ergänzung zum Java -Ausnahme -Handling -Modell. Die endgültige Struktur ermöglicht es dem Code, immer auszuführen, unabhängig davon, ob die Ausnahme auftritt. Verwenden Sie schließlich, um den internen Zustand eines Objekts aufrechtzuerhalten und nicht nachemmory-Ressourcen aufzuräumen. Ohne endlich wird Ihr Code verwirrend sein. Der folgende Code zeigt beispielsweise, wie Sie Code schreiben müssen, um nicht nachemory-Ressourcen zu kosten, ohne endlich zu verwenden:
Java.net.*; .Accept ();
Dieser Code erstellt einen Socket und ruft die Akzeptanzmethode auf. Bevor Sie die Methode verlassen, müssen Sie diesen Sockel schließen, um Ressourcen Schwachstellen zu vermeiden. Um diese Aufgabe zu erledigen, nennen wir Close AT // 2, was die letzte Aussage der Methode ist. Aber was passiert, wenn eine Ausnahme im Try -Block auftritt? In diesem Fall kommt es nie vor, dass der schließende Anruf AT // 2 niemals passiert. Daher müssen Sie diese Ausnahme erfassen und einen weiteren Anruf einfügen, um AT bei // 1 zu schließen, bevor Sie diese Ausnahme neu ausgeben. Dies stellt sicher, dass die Steckdose geschlossen ist, bevor die Methode ausgeht.
Das Schreiben von Code wie diesen ist sowohl umständlich als auch fehleranfällig, aber es ist ohne endlich unerlässlich. Leider können Programmierer in Sprachen ohne endgültigen Mechanismus vergessen, ihren Code auf diese Weise zu organisieren, was zu Schwachstellen von Ressourcen führt. Die endgültige Klausel in Java löst dieses Problem. Mit schließlich kann der vorherige Code in das folgende Formular umgeschrieben werden:
Java.net.*; .Accept ();
Der endgültige Block stellt sicher, dass die enge Methode immer ausgeführt wird, unabhängig davon, ob eine Ausnahme innerhalb des Try -Blocks ausgestellt wird. Daher wird sichergestellt, dass die enge Methode immer vor dem Verlassen der Methode aufgerufen wird. Auf diese Weise können Sie sicher sein, dass der Sockel geschlossen ist und dass Sie keine Ressourcen durchgesickert haben. In dieser Methode besteht kein weiterer Fangblock. Der Fangblock wird im ersten Beispiel bereitgestellt, um den Sockel zu schließen, jetzt wird dies endlich geschlossen. Wenn Sie einen Fangblock angeben, wird der Code im endgültigen Block nach Abschluss des Fangblocks ausgeführt.
Der endgültige Block muss mit dem Block Versuch oder Versuch/Catch verwendet werden. Darüber hinaus ist es nicht möglich, den Try -Block zu beenden, ohne seinen endgültigen Block auszuführen. Wenn der endgültige Block existiert, wird er immer ausgeführt. (Diese Anweisung ist aus dieser Sicht korrekt. Es gibt eine Möglichkeit, den Try -Block zu beenden, ohne den endgültigen Block auszuführen. Wenn der Code ein System ausführt. Auf der anderen Seite tun Sie es auch nicht, wenn Sie die Stromversorgung während der Ausführung von Try Block ausschalten.)