Stapel Abwickeln in diesen beiden Fällen geschehen, es ist nur, dass unter normalen Ausführung Der Stapel wird nur in den Kontext der aufrufenden Methode (oder des Blocks) abgewickelt, wenn die ausführende Methode zurückkehrt (oder der Block beendet wird). Lokale Variablen werden auf dem Stapel zugewiesen, sodass sie in umgekehrter Reihenfolge der Zuordnung bereinigt werden. Dieser Prozess wird als "abwickeln" bezeichnet. Es unterscheidet sich nicht von der Verarbeitung anderer Daten, die Sie in einer LIFO-Struktur speichern würden - z. rückgängig wiederholen.
Wenn eine Ausnahme ausgelöst wird, wird der Handler den Stapel durch null oder mehr Methoden auflösen, bis er einen findet, der die Ausnahme abfangen kann, oder bis er den Anfang des Stapels erreicht, an dem der unbehandelte Ausnahmehandler sein wird namens.
Es scheint Konvention zu sein, im Falle der Ausnahmebehandlung nur den Begriff Stackabwickeln zu verwenden, aber es ist der gleiche Prozess, der in jedem dieser Fälle auftritt. Der spezielle Fall, bei dem der Stapel aufgrund einer auslaufenden Methode abgewickelt wird, wird als Zurückgeben bezeichnet, und es scheint keine Konvention für die Benennung zu geben, was passiert, wenn ein Bereichsblock eines Codes verlassen wird.
Es wird wirklich nichts genannt. Überall im Standard sagt es Dinge wie "... automatische Variablen werden am Ende des Blocks zerstört". Es gibt diesem Prozess nie einen Namen. – GManNickG
@GMan - Speichern Sie die Unicorns: Ich denke, Sie könnten dies als Antwort hinzufügen. Erwähnen, was der Standard sagt, ist ein starkes Argument. – sharptooth