Condividi tramite


Procedura: implementare blocchi Try...Catch di I/O in Visual Basic

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

Esempio

Nell'esempio sono rappresentate una ad una tutte le eccezioni, dalla più specifica alla meno specifica.

Questo esempio di codice è disponibile anche come frammento di codice IntelliSense. Nella casella di selezione dei frammenti di codice si trova in File system - Elaborazione di unità, cartelle e file. Per ulteriori informazioni, vedere Procedura: inserire frammenti di codice IntelliSense.

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

Compilazione del codice

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: filtrare gli errori in un blocco Catch in Visual Basic

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

Riferimenti

Istruzione Try...Catch...Finally (Visual Basic)

Concetti

Procedure consigliate per l'utilizzo dei frammenti di codice IntelliSense

Cenni preliminari sulla gestione delle eccezioni strutturata per Visual Basic

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

Altre risorse

Attività di gestione delle eccezioni (Visual Basic)