Condividi tramite


Gestione delle eccezioni

Quando si verifica un'eccezione all'interno di un ambito, ogni thread di esecuzione logico nell'ambito viene interrotto. Il motore di runtime tenta di trovare un gestore eccezioni per l'eccezione appropriata.

Se viene trovato il gestore eccezioni che corrisponde al tipo specifico o a uno dei tipi di base, il controllo passa al gestore in questione, di cui viene eseguito il codice.

Nota

Il tipo di eccezione deve essere derivato da System.Exception.

I gestori eccezioni sono sequenziali; ovvero, vengono controllati in ordine, per verificare se possono gestire una particolare eccezione. Per funzionare correttamente, i gestori eccezioni devono essere posizionati in modo che quelli che gestiscono tipi più specifici vengano per primi, seguiti da quelli che gestiscono tipi più generici. In questo modo è possibile assicurare che un'eccezione di tipo specifico venga gestita dal gestore appropriato, invece che da un gestore designato per la gestione di un tipo di base.

Se il gestore eccezioni termina normalmente, il controllo passa all'ambito circostante. Se non è stata generata alcuna eccezione nell'ambito circostante, l'orchestrazione continua a essere eseguita. Se il gestore eccezioni termina con un'istruzione throw, l'eccezione originale viene nuovamente generata per l'ambito circostante su cui si deve agire, a meno che non venga specificata una diversa eccezione che si desidera generare.

Se non viene individuato alcun gestore eccezioni, verrà eseguito il gestore eccezioni predefinito. Il gestore eccezioni predefinito per un ambito chiamerà le compensazioni per eventuali transazioni annidate e quindi genererà nuovamente l'eccezione. Se si scrive un proprio gestore eccezioni, è possibile scegliere di non propagare l'eccezione.

Vedere anche

Eccezioni