Stack svolgimento avviene in entrambi i casi, è solo che in condizioni normali l'esecuzione dello stack viene svolta solo nel contesto del metodo chiamante (o blocco) quando il metodo di esecuzione ritorna (o il blocco viene chiuso). Le variabili locali sono allocate nello stack, quindi vengono ripulite in ordine inverso di allocazione ed è questo processo che viene chiamato unwinding. Non è diverso dall'elaborare qualsiasi altro tipo di dati che memorizzerai in una struttura LIFO - ad es. Annulla Ripristina.
Quando un'eccezione viene lanciata, il gestore disimpegna lo stack attraverso zero o più metodi finché non trova uno che può intercettare l'eccezione o finché non raggiunge la cima dello stack, a quel punto il gestore di eccezioni non gestito sarà chiamato.
Sembra essere convenzione utilizzare solo il termine pila di srotolamento nel caso di gestione delle eccezioni, ma è lo stesso processo che si verifica in ciascuno di questi casi. Il caso specifico in cui lo stack si svolge a causa dell'uscita di un metodo è chiamato return, non sembra esserci alcuna convenzione per nominare cosa succede quando si esce da un blocco di codice con scope.
fonte
2010-04-09 06:37:02
In realtà non si chiama nulla. Ovunque nello standard, dice cose come "... le variabili automatiche vengono distrutte alla fine del blocco". Non dà mai a quel processo un nome. – GManNickG
@GMan - Save the Unicorns: Immagino che potresti aggiungere questo come risposta. Menzionare ciò che dice lo standard è un argomento forte. – sharptooth