Utilizzo di gestori eccezioni filtrati dall'utente

In Visual Basic sono attualmente supportate eccezioni filtrate dall'utente. I gestori eccezioni filtrati dall'utente intercettano e gestiscono le eccezioni in base a requisiti definiti dall'utente per le singole eccezioni. Tali gestori utilizzano l'istruzione Catch con la parola chiave When.

Questa tecnica è utile quando un particolare oggetto eccezione corrisponde a più errori. In questo caso l'oggetto presenta in genere una proprietà che contiene il codice di errore specifico associato all'errore. È possibile utilizzare la proprietà del codice di errore nell'espressione per selezionare solo l'errore particolare che si desidera gestire in tale clausola Catch.

Nell'esempio di Visual Basic che segue viene illustrata l'istruzione Catch/When.

Try
      'Try statements.
   Catch When Err = VBErr_ClassLoadException
      'Catch statements.
End Try

L'espressione della clausola filtrata dall'utente non è sottoposta ad alcuna restrizione. Se durante l'esecuzione dell'espressione filtrata dall'utente si verifica un'eccezione, quest'ultima viene ignorata e si considera che l'espressione di filtro abbia restituito il valore false. In questo caso, Common Language Runtime continua la ricerca di un gestore per l'eccezione corrente.

Combinazione di un'eccezione specifica e di clausole filtrate dall'utente

Un'istruzione catch può contenere sia l'eccezione specifica che le clausole filtrate dall'utente. Nel runtime viene prima eseguito il test dell'eccezione specifica. Se l'eccezione specifica ha esito positivo, verrà eseguito il filtro dell'utente. Il filtro generico può contenere un riferimento alla variabile dichiarata nel filtro della classe. Si noti che non è possibile invertire l'ordine delle due clausole di filtro.

Nell'esempio di Visual Basic riportato di seguito vengono illustrate l'eccezione specifica ClassLoadException nell'istruzione Catch e la clausola filtrata dall'utente che utilizza la parola chiave When.

Try
      'Try statements.
   Catch cle As ClassLoadException When cle.IsRecoverable()
      'Catch statements.
End Try

Vedere anche

Attività

Procedura: utilizzare il blocco try/catch per l'intercettazione di eccezioni

Procedura: utilizzare eccezioni specifiche in un blocco catch

Concetti

Suggerimenti per gestire le eccezioni

Altre risorse

Nozioni fondamentali sulla gestione delle eccezioni