Partager via


Comment : implémenter des blocs Try...Catch d'E/S dans Visual Basic

Mise à jour : novembre 2007

L'exemple de code suivant implémente un bloc Try...Catch qui traite Exception, IOException et toutes les exceptions qui dérivent de IOException.

Exemple

Cet exemple va du plus spécifique au moins spécifique ; chaque exception est testée tour à tour.

Cet exemple de code est également disponible sous forme d'extrait de code IntelliSense. Dans le sélecteur d'extrait de code, il est localisé dans Système de fichiers - Traitement de lecteurs, de dossiers et de fichiers. Pour plus d'informations, consultez Comment : insérer des extraits de code dans votre code (Visual Basic).

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

Compilation du code

Ajoutez le code que vous souhaitez exécuter au bloc Try.

Programmation fiable

Utilisez ce bloc de code comme point de départ pour encapsuler une opération de données dans une instruction Try...Catch. Ce bloc Try...Catch est conçu pour intercepter et lever de nouveau toutes les exceptions. Ce n'est pas forcément la meilleure solution pour votre projet. Pour obtenir une description des options de gestion des exceptions, consultez Méthodes conseillées pour l'utilisation d'extraits de code IntelliSense.

Vous pouvez réduire la probabilité d'exceptions en utilisant les contrôles Windows Forms, tels que le composant OpenFileDialog, composant (Windows Forms) et les contrôles du composant SaveFileDialog, composant (Windows Forms) qui limitent les choix de l'utilisateur aux noms de fichiers valides. La propriété FileInfo.Exists peut vérifier si un fichier existe avant d'essayer de l'ouvrir. Toutefois, l'utilisation de ces contrôles et de ces classes n'est pas sans poser de problèmes. Le système de fichiers peut changer entre le moment où l'utilisateur sélectionne un fichier et le moment où le code s'exécute. La gestion des exceptions est donc presque toujours requise lors de l'utilisation de fichiers.

Sécurité

Pour de nombreuses tâches sur les fichiers, l'assembly requiert un niveau de privilège accordé par la classe FileIOPermission. Si vous exécutez le programme dans un contexte partiellement fiable, le code peut lever une exception en raison de privilèges insuffisants. Pour plus d'informations, consultez Notions fondamentales de la sécurité d'accès du code. L'utilisateur doit avoir également accès au fichier, s'il existe. Pour plus d'informations, consultez Listes de contrôle d'accès.

Ne vous basez pas sur l'extension du nom d'un fichier pour en déterminer le contenu. Par exemple, il se peut que le fichier nommé Form1.vb ne soit pas un fichier source Visual Basic.

Voir aussi

Tâches

Comment : filtrer des erreurs dans un bloc Catch dans Visual Basic

Comment : vérifier l'exception interne d'une exception

Concepts

Méthodes conseillées pour l'utilisation d'extraits de code IntelliSense

Vue d'ensemble de la gestion structurée des exceptions pour Visual Basic

Cas d'utilisation de la gestion structurée ou non structurée des exceptions

Référence

Try...Catch...Finally, instruction (Visual Basic)

Autres ressources

Tâches de gestion des exceptions