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)