Comment faire pour utiliser la gestion structurée des exceptions dans Visual Basic.NET ou Visual Basic 2005

Traductions disponibles Traductions disponibles
Numéro d'article: 315965 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article explique comment utiliser la gestion structurée des exceptions dans Visual Basic.NET ou Visual Basic 2005.

Configuration requise

La liste suivante met en évidence le matériel recommandé, logiciels, infrastructure réseau et service packs dont vous avez besoin :
  • Visual Basic.NET ou Visual Basic 2005
Cet article suppose que vous êtes familiarisé avec les rubriques suivantes :
  • Visual Basic.NET ou Visual Basic 2005
  • Microsoft Visual Studio.NET ou Microsoft 2005 Visual Studio

Gestion structurée des exceptions

Visual Basic.NET ou Visual Basic 2005 offre la gestion structurée des exceptions qui fournit une alternative puissante et plus lisible pour gérer les erreurs « On Error Goto », qui est disponible dans les versions précédentes de Microsoft Visual Basic. Gestion structurée des exceptions sont plus puissante car elle vous permet d'imbriquer des gestionnaires d'erreurs à l'intérieur d'autres gestionnaires d'erreurs dans la même procédure. En outre, gestion structurée des exceptions utilise une syntaxe de bloc similaire à la Si...Else...End If instruction. Ainsi, Visual Basic.NET et Visual Basic 2005 le code plus lisible et plus facile à gérer.

Remarque: Visual Basic.NET ou Visual Basic 2005 conserve la syntaxe « On Error Goto » pour la compatibilité ascendante. Vous pouvez toujours utiliser cette syntaxe dans Visual Basic.NET ou 2005 Visual Basic code. Cependant, vous ne pouvez pas combiner gestion structurée des exceptions et les instructions On Error dans la même procédure. Lorsque vous écrivez un nouveau code, Microsoft recommande l'utilisation de la gestion d'exception structurée.

La syntaxe de base de gestion structurée des erreurs est la suivante :
Try
   'Code that may raise an error.
Catch
   'Code to handle the error.
Finally
   'Code to do any final clean up.
End Try
				
Les instructions Essayez et de fin sont requises. Les instructions Catch et Finally ne sont pas obligatoires, même si vous devez inclure au moins un d'eux dans votre code. Vous pouvez également spécifier plusieurs instructions Catch afin que chaque bloc Catch gère une erreur spécifique.

Intercepter une Exception

  1. Démarrez Visual Studio.NET ou Visual Studio 2005.
  2. Créer un nouveau projet Application Console dans Visual Basic.NET ou Visual Basic 2005.
  3. Dans la procédure Sub Main , ajoutez le code suivant :
    Dim a As Integer = 0
    Dim b As Integer = 0
    Dim c As Integer = 0
    
    Try
      a = b \ c
    Catch exc As Exception
      Console.WriteLine("A run-time error occurred")
    Finally
      Console.ReadLine()
    End Try
    					
  4. Dans le menu Déboguer , cliquez sur Démarrer pour exécuter l'application. Le code essaie de diviser un nombre par zéro. Il s'agit d'une opération non conforme qui provoque une division par zéro exception. Heureusement, le bloc Catch intercepte cette erreur, et la fenêtre de Console affiche le message d'erreur suivant :
    A run-time error has occurred
    						
  5. Fermez la fenêtre de Console.

Intercepter plusieurs Exceptions

Cette section montre comment utiliser plusieurs instructions Catch pour gérer les erreurs différentes.
  1. Ouvrez le projet d'Application Console que vous avez créé dans la section précédente.
  2. Dans la procédure Sub Main , remplacez le code que vous avez copié dans la section précédente avec le code suivant :
    Dim a As Integer = 2147483647
    Dim b As Integer = 0
    Dim c As Integer = 0
    
    Try
      a += 1
    Catch exc As DivideByZeroException
      Console.WriteLine("Error: Divide by zero")
    Catch exc As OverflowException
      Console.WriteLine("Error: Overflow")
    Finally
      Console.ReadLine()
    End Try
    						
    Ce code comprend deux blocs Catch : une pour intercepter la précédente division par zéro et l'autre pour intercepter l'erreur de débordement de la nouvelle.
  3. Dans le menu Déboguer , cliquez sur Démarrer pour exécuter l'application. La fenêtre de Console affiche le message d'erreur suivant :
    Error: Overflow
    						
  4. Fermez la fenêtre de Console.
  5. Parce que vous ne pouvez pas toujours anticiper toutes les erreurs qui peuvent se produire, vous pouvez ajouter un bloc intercepter toutes les exceptions inattendues. Par exemple, ajoutez le code suivant avant l'instruction Finally pour intercepter des erreurs inattendues et afficher le message d'erreur approprié :
    Catch exc As Exception
    Console.WriteLine("Error: " & exc.Message)
    					
  6. Dans le menu fichier , cliquez sur Fermer la Solution.

Lever une Exception

Gestion structurée des exceptions utilise l'instruction Catch pour intercepter une exception. Gestion structurée des exceptions également fournit un moyen pour lever une exception. Par exemple, il est utile lever une exception lorsque vous effectuez la validation des données à l'intérieur d'une procédure Property Set , car vous souhaiterez peut-être lever une erreur si une règle d'entreprise est violée.
  1. Démarrez Visual Studio.NET ou Visual Studio 2005.
  2. Créer un nouveau projet Application Console dans Visual Basic.NET ou Visual Basic 2005.
  3. Dans le menu projet , cliquez sur Ajouter une classe.
  4. Dans la fenêtre Ajouter un nouvel élément , tapez clsPerson.vb dans le texte du nom de zone, puis cliquez sur OK.
  5. Ajoutez le code suivant à l'intérieur de la clsPerson Public Class...End Class instructions :
    Private mintAge As Integer
    
    Public Property Age() As Integer
      Get
        Age = mintAge
      End Get
      Set(ByVal Value As Integer)
        If Value >= 0 Then
          mintAge = Value
        Else
          Throw New ArgumentException ("Age cannot be negative")
        End If
      End Set
    End Property
    						
    Ce code crée une propriété Age . Parce qu'une personne ne peut pas avoir une durée de vie négative, une erreur est déclenchée si l'utilisateur de la classe tente de définir la durée de vie d'un nombre qui est inférieur à zéro.
  6. Dans la procédure Sub Main Module1.vb, ajoutez le code suivant :
    Dim p As New clsPerson()
    
    Try
      p.Age = -1
    Catch exc As Exception
      Console.WriteLine(exc.Message)
    Finally
      Console.ReadLine()
    End Try
    					
  7. Dans le menu Déboguer , cliquez sur Démarrer pour exécuter l'application. La fenêtre de Console affiche le message d'erreur suivant :
    Age cannot be negative
    						
  8. Fermez la fenêtre de Console.

Listing complet du Code

Intercepter une Exception

Module Module1

  Sub Main()
    Dim a As Integer = 0
    Dim b As Integer = 0
    Dim c As Integer = 0

    Try
      a = b \ c
    Catch exc As Exception
      Console.WriteLine("A run-time error occurred")
    Finally
      Console.ReadLine()
    End Try

  End Sub

End Module
				

Intercepter plusieurs Exceptions

Module Module1

  Sub Main()
    Dim a As Integer = 2147483647
    Dim b As Integer = 0
    Dim c As Integer = 0

    Try
      a += 1
    Catch exc As DivideByZeroException
      Console.WriteLine("Error: Divide by zero")
    Catch exc As OverflowException
      Console.WriteLine("Error: Overflow")
    Catch exc As Exception
      Console.WriteLine("Error: " & exc.Message)
    Finally
      Console.ReadLine()
    End Try


  End Sub

End Module
				

Lever une Exception

Module Module1

  Sub Main()
    Dim p As New clsPerson()

    Try
      p.Age = -1
    Catch exc As Exception
      Console.WriteLine(exc.Message)
    Finally
      Console.ReadLine()
    End Try
  End Sub

End Module

Public Class clsPerson

  Private mintAge As Integer

  Public Property Age() As Integer
    Get
      Age = mintAge
    End Get
    Set(ByVal Value As Integer)
      If Value >= 0 Then
        mintAge = Value
      Else
        Throw New ApplicationException("Age cannot be negative")
      End If
    End Set
  End Property

End Class
				

RÉFÉRENCES

Pour plus d'informations, reportez-vous aux sites Web Microsoft suivants :
Erreur de manipulation du langage VB.NET moyen : Vivant avec Exceptions (un article de Développeur Visual Basic )
http://msdn.Microsoft.com/en-us/library/aa227603 (v=vs.60) .aspx

Comment pour intercepter une Exception
http://msdn.Microsoft.com/en-us/library/ys1b32h3 (v=vs.80) .aspx

Comment pour lever une Exception
http://msdn.Microsoft.com/en-us/library/z7w9ff54 (v=vs.80) .aspx

Propriétés

Numéro d'article: 315965 - Dernière mise à jour: vendredi 15 juin 2012 - Version: 2.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Initiation
  • Microsoft Visual Basic .NET 2002 Initiation
Mots-clés : 
kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB315965 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 315965
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com