-
Si eseguono le <istruzioni-try>.
-
Se l'esecuzione termina senza fallimenti, si eseguono le
eventuali <istruzioni-finally> e si termina.
-
Altrimenti, se una istruzione in <istruzioni-try>
lancia un'eccezione ecc, si cerca il primo blocco
catch
tale che ecc sia istanza di <classe-eccezioneX>.
-
Se un tale blocco esiste, si eseguono le <istruzioni-catchX>
dopo aver associato ecc all'identificatore <idX>;
infine si eseguono le eventuali <istruzioni-finally>.
L'eccezione
è stata catturata con successo.
-
Se invece ecc non è istanza di nessuna
<classe-eccezioneX>,
allora vengono comunque eseguite le eventuali <istruzioni-finally>,
e l'eccezione viene passata al chiamante.
Note:
-
Le eventuali <istruzioni-finally> vengono
eseguite sempre, anche se, ad esempio, c'è un return
del
blocco try o catch. Il blocco finally
può contenere delle istruzioni che chiudono dei files oppure rilasciano
delle risorse, per garantire la consistenza dello stato.
-
I costrutti try-catch-finally possono essere
annidati a piacere. Esempio: se in un blocco catch
o finally può essere generata un'eccezione, si possono
racchiudere le sue istruzioni in un altro blocco try.
|