Procedura: mantenere il controllo quando si verifica un errore (Visual Basic)

È 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. 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 (Visual Basic)

Procedura: eseguire istruzioni in base a una o più condizioni (Visual Basic)

Procedura: testare più valori di un'espressione (Visual Basic)

Concetti

Strutture decisionali (Visual Basic)

Strutture di ciclo (Visual Basic)

Altre strutture di controllo (Visual Basic)

Strutture di controllo annidate (Visual Basic)

Altre risorse

Flusso di controllo in Visual Basic