Procedura: intercettare un'eccezione in Visual Basic

Nell'esempio che segue viene illustrato come utilizzare un blocco Try e Catch per intercettare le eccezioni.

Esempio

Nell'esempio che segue viene illustrato come utilizzare un blocco Try…Catch per intercettare un'eccezione OverflowException.

Questo esempio di codice è anche disponibile come frammento di codice IntelliSense. Nella casella di selezione dei frammenti di codice si trova in Linguaggio Visual Basic. Per ulteriori informazioni, vedere Procedura: inserire frammenti di codice IntelliSense.

Dim Top As Double = 5
Dim Bottom As Double = 0
Dim Result As Integer
Try
    Result = CType(Top / Bottom, Integer)
Catch Exc As System.OverflowException
    MsgBox("Attempt to divide by zero resulted in overflow")
End Try

L'esempio presenta i seguenti requisiti:

  • Un riferimento allo spazio dei nomi System.

Nel seguente esempio di codice viene implementato un blocco Try...Catch che gestisce Exception, IOException e tutte le eccezioni derivate da IOException.

Try
    ' Add code for your I/O task here. 
Catch dirNotFound As System.IO.DirectoryNotFoundException
    Throw dirNotFound
Catch fileNotFound As System.IO.FileNotFoundException
    Throw fileNotFound
Catch pathTooLong As System.IO.PathTooLongException
    Throw pathTooLong
Catch ioEx As System.IO.IOException
    Throw ioEx
Catch security As System.Security.SecurityException
    Throw security
Catch ex As Exception
    Throw ex
Finally
    ' Dispose of any resources you used or opened in the Try block. 
End Try

Aggiungere il codice che si desidera eseguire al blocco Try.

Programmazione efficiente

Utilizzare questo blocco di codice come punto iniziale per il wrapping di un'operazione sui dati in un'istruzione Try...Catch. Questo blocco Try...Catch è stato progettato per intercettare e rigenerare tutte le eccezioni, scelta che potrebbe non essere adatta al progetto in uso. Per una descrizione delle opzioni di gestione delle eccezioni, vedere Procedure consigliate per l'utilizzo dei frammenti di codice IntelliSense.

È possibile ridurre la probabilità di eccezioni utilizzando controlli Windows Form quali i controlli del componente Componente OpenFileDialog (Windows Form) e del componente Componente SaveFileDialog (Windows Form), che limitano le scelte dell'utente a nomi file validi. La proprietà FileInfo.Exists può verificare se un file esiste prima di provare ad aprirlo. Tuttavia, l'uso di questi controlli e classi non è infallibile. Il file system può subire variazioni nel tempo che intercorre tra la selezione di un file da parte dell'utente e il momento in cui il codice viene eseguito. Pertanto, quando si utilizzano i file, la gestione delle eccezioni sarà quasi sempre necessaria.

Sicurezza

Per molte attività di file, l'assembly richiede un livello di privilegio concesso dalla classe FileIOPermission. Se eseguito in un contesto ad attendibilità parziale, il codice potrebbe generare un'eccezione a causa dell'insufficienza di privilegi. Per ulteriori informazioni, vedere Nozioni fondamentali sulla sicurezza per l’accesso al codice. Se esiste, per l'utente è necessario anche l'accesso al file. Per ulteriori informazioni, vedere Cenni preliminari sulla tecnologia ACL.

Non basarsi sull'estensione del nome file per prendere decisioni in merito al relativo contenuto. È possibile ad esempio che il file Form1.vb non sia un file di origine di Visual Basic.

Vedere anche

Attività

Procedura: generare un'eccezione in Visual Basic

Procedura: testare il codice con un blocco Try…Catch in Visual Basic

Procedura: pulire le risorse con un blocco Try…Finally in Visual Basic

Procedura: filtrare gli errori in un blocco Catch in Visual Basic

Procedura: controllare l'eccezione interna di un'eccezione (Visual Basic)

Risoluzione dei problemi di gestione delle eccezioni (Visual Basic)

Concetti

Definizione delle circostanze di utilizzo della gestione delle eccezioni strutturata o non strutturata (Visual Basic)