(kurz die fett und kursiv Teile der Antwort Antwort- Lesen) Fluss
Die Ausführung gemäß den Java 8 docs. Es bietet Ihnen die Details. Sie können die Ausführung von Rückgabeanweisungen basierend auf dem Folgenden ableiten.
Eine try-Anweisung mit einem finally-Block wird ausgeführt, indem zuerst der try-Block ausgeführt wird.
Dann gibt es eine Auswahl:
• Wenn die Ausführung des try-Block normal abgeschlossen ist, dann wird der finally-Block ausgeführt wird, und dann gibt es eine Auswahl:
- Wenn der finally-Block normal abgeschlossen , dann wird die Testanweisung normalerweise abgeschlossen.
- Wenn der finally-Block abrupt Grund S abgeschlossen ist, dann wird die try-Anweisung beendet abrupt Grund S.
• Wenn die Ausführung des try-Block wegen eines Wurfes eines Wertes V abrupt beendet ist, dann gibt es eine Auswahl:
- Wenn der Laufzeittyp von V Zuordnung kompatibel mit einer abfangbare Ausnahme Klasse jeder catch-Klausel der try-Anweisung, dann der erste (ganz links), so catch-Klausel ausgewählt ist. Der Wert V wird dem Parameter der ausgewählten catch-Klausel zugewiesen, und die Klausel Block of that catch wird ausgeführt.
Dann gibt es eine Auswahl:
> Wenn der catch-Block normal abgeschlossen ist, dann wird der finally-Block ausgeführt wird. Dann gibt es eine Auswahl:
»Wenn der finally-Block normal abgeschlossen wird, wird die try-Anweisung normal abgeschlossen.
»Wenn der finally-Block aus irgendeinem Grund abrupt beendet wird, wird die try -Anweisung abrupt aus dem gleichen Grund beendet.
>Wenn der catch-Block aus Gründen R abrupt abgeschlossen wird, wird der finally-Block ausgeführt. Dann gibt es eine Auswahl:
»Wenn der finally-Block normal abgeschlossen ist, dann wird die try-Anweisung beendet abrupt Grund R.
» Wenn der finally-Block abrupt Grund S abgeschlossen ist, dann wird die versuchen Sie Anweisung abrupt aus Gründen S abgeschlossen (und Grund R wird verworfen).
- Wenn der Laufzeittyp von V ist nicht Zuordnung kompatibel mit einer abfangbare Ausnahmeklasse jeder catch-Klausel der try-Anweisung, dann der schließlich Block ausgeführt wird.
Dann gibt es eine Auswahl:
> Wenn der finally-Block normal abgeschlossen ist, dann wird die try-Anweisung vervollständigt abrupt wegen eines Einwurfs des Wertes V.
> Wenn der finally-Block abrupt beendet für Grund S, dann wird die try-Anweisung aus Gründen S abrupt beendet (und der Wert V wird verworfen und vergessen).
• Wenn die Ausführung des try-Block aus einem anderen Grund R abrupt beendet ist, dann wird der schließlich Block ausgeführt, und dann gibt es eine Wahl:
- Wenn der schließlich vervollständigt Block normal, dann die try-Anweisung schließt abrupt für Grund R.
- Wenn der finally-Block aus Gründen S abrupt abgeschlossen wird, dann wird die try-Anweisung aus Gründen S abrupt beendet (und der Grund R wird verworfen).
die Erklärung ist klar, in dieser Link- javaDoc
Welche Sprache in der Java-Spezifikation glauben Sie, dass das bricht, das würde einen Fehler erfordern? –