Procedura: mantenere il controllo quando si verifica un errore
Aggiornamento: novembre 2007
È possibile utilizzare la costruzione Istruzione Try...Catch...Finally (Visual Basic) per eseguire una gestione delle eccezioni strutturata. Questo consente di eseguire uno specifico blocco di istruzioni se si verifica una determinata eccezione durante l'esecuzione del codice. Quando si verifica questa situazione, si dice che nel codice viene generata l'eccezione, che può quindi essere intercettata con l'istruzione Catch appropriata.
Per eseguire un insieme di istruzioni se il codice genera un'eccezione
Utilizzare la costruzione Try...Catch...Finally per racchiudere il codice che potrebbe generare un'eccezione. Quindi specificare il codice da eseguire se si verifica un'eccezione e, facoltativamente, fornire un insieme di istruzioni da eseguire prima di uscire dalla costruzione Try...Catch...Finally.
Nel seguente esempio si tenta di calcolare la data e l'ora esattamente dopo 100 anni dal valore fornito nella variabile givenDate di tipo Object.
Dim givenDate As Object Dim nextCentury As Date Try nextCentury = Microsoft.VisualBasic.DateAdd("yyyy", 100, givenDate) Catch thisExcep As System.ArgumentOutOfRangeException ' The resulting date/time is later than December 31, 9999. Catch thisExcep As System.ArgumentException ' At least one argument has an invalid value. Catch thisExcep As System.InvalidCastException ' The value in givenDate cannot be interpreted as a date/time. Catch ' An unforeseen exception has occurred. Finally ' This block is always run before leaving the Try structure. End Try
I primi tre blocchi Catch gestiscono le eccezioni che è possibile prevedere dalla Funzione DateAdd (Visual Basic). L'ultimo blocco Catch consente di gestire una qualsiasi eccezione imprevista.
Indipendentemente dall'esito, il blocco Finally sarà sempre l'ultima parte del codice ad essere eseguita prima dell'uscita dalla costruzione Try...Catch...Finally. Se si creano o si aprono risorse, ad esempio oggetti o connessioni a database, in un blocco Try o Catch, è possibile utilizzare il blocco Finally per chiudere ed eliminare tali risorse, se necessario.
Se la variabile di eccezione thisExcep non è presente in un'istruzione di dichiarazione quale Dim, come dichiarazione verrà utilizzata l'istruzione Catch con la clausola As.
Vedere anche
Attività
Procedura: trasferire un controllo fuori da una struttura di controllo
Procedura: eseguire istruzioni in base a una o più condizioni
Procedura: verificare più valori di un'espressione
Concetti
Strutture di controllo nidificate