Quando ha luogo un'eccezione, un oggetto appropriato per identificarla viene creato e la routine si interrompe in quel punto per risalire lo stack alla ricerca del primo blocco di codice in grado di gestire tale eccezione, a partire dal punto in cui essa ha luogo.Originariamente inviato da 123delphi321
se avviene un errore sulla "istruzione 2" le istruzioni 3 e 4 non vengono eseguite?codice:procedure TForm1.okButtonClick(Sender: TObject); begin try istruzione 1; istruzione 2; istruzione 3; istruzione 4; except istruzione except; end; end;
Nel caso che hai presentato, l'istruzione 2 si trova in un blocco try...except, pertanto qualsiasi eccezione che dovesse scaturire da 1, 2, 3 e 4 viene gestita.
Se l'istruzione 2 genera un'eccezione, la routine si "interrompe" per cercare il primo blocco in grado di gestirla; in questo caso, essendo protetto con try...except, viene eseguito il codice incluso tra except...end che provvede pure ad "assorbire" l'eccezione, salvo la presenza di un'istruzione che la rilanci di nuovo (o ne rilanci un'altra).
Alla luce di tutto questo, la risposta è sì, in caso di eccezione su 2, le istruzioni 3 e 4 non vengono comunque eseguite, indipendentemente dalla presenza del try...except; il blocco try...except provvede comunque a gestire l'errore che si sarebbe altrimenti propagato in modo analogo a quello descritto alle routine chiamanti nello stack, fino ad arrivare al "gestore predefinito".
Ciao!![]()

Rispondi quotando