Utilizzo di gestori eccezioni filtrati dall'utenteUsing User-Filtered Exception Handlers

In Visual Basic sono attualmente supportate eccezioni filtrate dall'utente.Currently, Visual Basic supports user-filtered exceptions. I gestori di eccezioni filtrati dall'utente intercettano e gestiscono le eccezioni in base a requisiti definiti dall'utente per le singole eccezioni.User-filtered exception handlers catch and handle exceptions based on requirements you define for the exception. Tali gestori usano l'istruzione Catch con la parola chiave When.These handlers use the Catch statement with the When keyword.

Questa tecnica è utile quando un particolare oggetto eccezione corrisponde a più errori.This technique is useful when a particular exception object corresponds to multiple errors. In questo caso l'oggetto presenta in genere una proprietà che contiene il codice di errore specifico associato all'errore.In this case, the object typically has a property that contains the specific error code associated with the error. È possibile usare la proprietà del codice di errore nell'espressione per selezionare solo l'errore particolare che si desidera gestire in tale clausola Catch.You can use the error code property in the expression to select only the particular error you want to handle in that Catch clause.

L'esempio di Visual Basic seguente illustra l'istruzione Catch/When.The following Visual Basic example illustrates the Catch/When statement.

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

L'espressione della clausola filtrata dall'utente non è sottoposta ad alcuna restrizione.The expression of the user-filtered clause is not restricted in any way. 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.If an exception occurs during execution of the user-filtered expression, that exception is discarded and the filter expression is considered to have evaluated to false. In questo caso Common Language Runtime continua la ricerca di un gestore per l'eccezione corrente.In this case, the common language runtime continues the search for a handler for the current exception.

Combinazione di un'eccezione specifica e di clausole filtrate dall'utenteCombining the Specific Exception and the User-Filtered Clauses

Un'istruzione catch può contenere sia l'eccezione specifica che le clausole filtrate dall'utente.A catch statement can contain both the specific exception and the user-filtered clauses. Nel runtime viene prima eseguito il test dell'eccezione specifica.The runtime tests the specific exception first. Se l'eccezione specifica ha esito positivo, verrà eseguito il filtro dell'utente.If the specific exception succeeds, the runtime executes the user filter. Il filtro generico può contenere un riferimento alla variabile dichiarata nel filtro della classe.The generic filter can contain a reference to the variable declared in the class filter. Si noti che non è possibile invertire l'ordine delle due clausole di filtro.Note that the order of the two filter clauses cannot be reversed.

L'esempio di Visual Basic seguente illustra l'eccezione specifica ClassLoadException nell'istruzione Catch e la clausola filtrata dall'utente che usa la parola chiave When.The following Visual Basic example shows the specific exception ClassLoadException in the Catch statement as well as the user-filtered clause using the When keyword.

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

Vedere ancheSee also