Gestion des exceptions en VB.Net (Try Catch)

⚡ Résumé intelligent

La gestion des exceptions en VB.Net permet de gérer les erreurs d'exécution, telles que la division par zéro, à l'aide des mots clés Try, Catch, Finally et Throw, afin qu'un programme puisse réagir aux problèmes avec élégance au lieu de planter pendant son exécution.

  • 🔍 Exception: Un problème qui survient lors de l'exécution, par exemple la division d'un nombre par zéro.
  • 🛡️ Essayez d'attraper : Le bloc Try encapsule le code risqué ; le bloc Catch gère l'exception qu'il lève.
  • Enfin: Le bloc Finally s'exécute qu'une exception se produise ou non.
  • (I.e. Projection : La méthode Throw lève un objet exception dérivé de la classe System.Exception.
  • 🧩 Exceptions personnalisées : Héritez de ApplicationException pour définir vos propres types d'exceptions.
  • 🤖 Aide de l'IA : GitHub Copilot et IntelliCode Générez des blocs Try Catch au fur et à mesure de votre saisie.

Gestion des exceptions en VB.Net

Qu’est-ce qu’une exception dans VB.Net ?

An Exception dans VB.Net fait référence à un problème qui survient lors de l'exécution du programme. Elle est provoquée par une circonstance inattendue. Un bon exemple est lorsque vous effectuez une opération de division, puis que vous divisez par zéro (0). Une exception sera levée.

Qu’est-ce que la gestion des exceptions dans VB.Net ?

Avec des exceptions dans VB.Net, vous pouvez transférer le contrôle d'un programme d'une partie à une autre. Dans VB.Net, les exceptions sont gérées à l'aide des 4 mots-clés suivants :

Mots-clés Détails
Essayez Le travail du bloc Try consiste à identifier le bloc de code pour lequel une exception spécifique sera activée. Il doit être suivi d'un ou plusieurs blocs catch.
Attraper La capture de l'exception se fait dans ce bloc. Il s'agit d'un gestionnaire d'exceptions dans lequel l'exception est gérée.
Finalement Utilisez le bloc Enfin pour exécuter un ensemble d'instructions, qu'une exception se soit produite ou non.
Jeter Une exception est levée après l'apparition d'un problème. C'est le travail du mot-clé Throw.

Les rôles de ces quatre mots-clés étant clairs, réfléchissez à la manière dont ils se combinent au sein d'une même phrase.

Syntaxe de Try Catch dans VB.Net

Les instructions Try Catch dans VB.Net sont définies à l'aide de la syntaxe ci-dessous :

Try
   [ try_Statement(s) ]
   [ Exit Try ]
[ Catch [ exception_name [ As type ] ] [ When expression ]
   [ catch_Statement(s) ]
   [ Exit Try ] ]
[ Catch ... ]
[ Finally
   [ finally_Statement(s) ] ]
End Try

Le bloc Try/Catch doit entourer le code susceptible de déclencher une exception. Ce code est appelé code protégé. Vous pouvez utiliser plusieurs instructions catch lorsque vous devez intercepter différents types d'exceptions.

Exemple de gestion des exceptions dans VB.Net avec Try Catch et Enfin

Les instructions Try/Catch permettent de séparer le code normal du système de gestion des erreurs. Prenons l'exemple de la gestion d'une exception à l'aide des mots-clés Try, Catch et Finally.

Étape 1) Créez une nouvelle application console.

Étape 2) Utilisez ce code:

Module Module1
    Sub divisionFunction(ByVal n1 As Integer, ByVal n2 As Integer)
        Dim answer As Integer
        Try
            answer = n1 \ n2
        Catch ex As DivideByZeroException
            Console.WriteLine("Exception: {0}", ex)
        Finally
            Console.WriteLine("Answer is: {0}", answer)
        End Try
    End Sub
    Sub Main()
        divisionFunction(4, 0)
        Console.ReadKey()
    End Sub

End Module

Étape 3) Cliquez sur le bouton Démarrer de la barre d'outils pour exécuter le code. Vous devriez obtenir le résultat suivant :

Sortie de la console VB.Net Try Catch Finally affichant l'exception DivideByZeroException interceptée

Voici une capture d'écran du code :

Exemple de code VB.Net Try Catch Finally affiché dans Visual Studio

Explication de Code:

  1. Création d'un module nommé Module1.
  2. Création d'une sous-procédure nommée divisionFunction avec deux arguments entiers n1 et n2. Le ByVal est un mot-clé VB.Net indiquant que les valeurs des arguments seront transmises par valeur.
  3. Création d'une variable entière nommée réponse.
  4. Début du bloc Try/Catch. Nous devons entourer le code qui, selon nous, pourrait déclencher une exception avec ce bloc.
  5. Effectuer une opération de division entre les valeurs des variables n1 et n2. Le résultat de l'opération de division est affecté à la variable réponse. Ce code peut déclencher une exception, par exemple, lorsque nous divisons un nombre par zéro, c'est pourquoi nous l'avons entouré des blocs Try/Catch.
  6. Attraper l'exception nommée DivideByZeroException et attribuer le message d'exception généré à l'ex.
  7. Impression de texte sur la console pour informer l'utilisateur du type/nom de l'exception qui a été déclenchée.
  8. Le bloc Enfin. Cela s'exécutera, qu'une exception soit interceptée ou non.
  9. Impression d'un texte sur la console montrant le résultat de l'opération de division.
  10. Fin du bloc Try, c'est-à-dire fin du code de gestion des erreurs.
  11. Fin de la sous-procédure divisionFunction.
  12. Début de la sous-procédure principale.
  13. Appel/invocation de la sous-procédure divisionFunction. Les valeurs des deux arguments entiers sont transmises ici. La valeur de n1=4 et n2=0. Cela signifie que l’opération de division sera 4\0, c’est-à-dire n1\n2.
  14. Suspendre la fenêtre de la console en attendant que l'utilisateur agisse pour la fermer.
  15. Fin de la sous-procédure principale.
  16. Fin du module.

Exceptions définies par l'utilisateur dans VB.Net

VB.Net vous permet de définir vos propres exceptions. Vous pouvez obtenir des classes d'exceptions personnalisées à partir de la classe ApplicationException. Prenons un exemple pour illustrer cela :

Exemple d'exception définie par l'utilisateur dans VB.Net

Voici un exemple d'exception définie par l'utilisateur en VB.Net :

Étape 1) Créez une nouvelle application console.

Étape 2) Utilisez le code suivant :

Module Module1

    Public Class HeightIsZeroException : Inherits ApplicationException
        Public Sub New(ByVal text As String)
            MyBase.New(text)
        End Sub
    End Class
    Public Class Height
        Dim height As Integer = 0
        Sub showHeight()
            If (height = 0) Then
                Throw (New HeightIsZeroException("Zero Height found"))
            Else
                Console.WriteLine("Height is: {0}", height)
            End If
        End Sub
    End Class
    Sub Main()
        Dim hght As Height = New Height()
        Try
            hght.showHeight()
        Catch ex As HeightIsZeroException
            Console.WriteLine("HeightIsZeroException: {0}", ex.Message)
        End Try
        Console.ReadKey()
    End Sub

End Module

Étape 3) Cliquez sur le bouton Démarrer dans la barre supérieure pour exécuter le code. Vous devriez obtenir le résultat suivant :

Message d'exception HeightIsZeroException défini par l'utilisateur en VB.Net affiché sur la console

Voici une capture d'écran du code :

Exemple de code de classe d'exception définie par l'utilisateur en VB.Net dans Visual Studio

Explication de Code:

  1. Création d'un module nommé Module1.
  2. Création d'une classe d'exception nommée HeightIsZeroException. La classe hérite de toute la classe ApplicationException.
  3. Création d'une sous-procédure nommée Nouveau. Il faudra un argument de chaîne nommé texte.
  4. Appeler le constructeur de la classe de base et lui transmettre l'argument ci-dessus.
  5. Fin de la sous-procédure Nouvelle.
  6. Fin de la classe HeightIsZeroException.
  7. Création d'une classe nommée Height. Son modificateur d'accès public est Public, ce qui signifie qu'il sera accessible publiquement.
  8. Création d'une variable entière nommée Height et initialisation de sa valeur à 0.
  9. Création d'une sous-procédure nommée showHeight().
  10. Vérifier quand la valeur de la variable Height est 0. Nous avons utilisé la condition If…Then.
  11. Pour lancer l'exception HeightIsZeroException si la condition ci-dessus est vraie. Le message Zero Height Found sera affiché lorsque cette exception est levée.
  12. La partie Else à exécuter lorsque la condition If n'est pas vraie.
  13. Message à imprimer sur la console indiquant la Hauteur lorsqu'elle n'est pas 0.
  14. Fin de la condition If.
  15. Fin de la sous-procédure showHeight().
  16. Fin du cours Hauteur.
  17. Début de la sous-procédure principale.
  18. Création d'un objet nommé Height en tant qu'instance de la classe Height.
  19. Début du bloc de gestion des exceptions.
  20. Appel de la sous-procédure showHeight() définie dans la classe Height. Nous avons utilisé un objet de cette classe pour accéder à cette méthode. Cette ligne peut générer une exception ; par conséquent, nous l'avons entourée d'un bloc de gestion des exceptions.
  21. Attraper l'exception HeightIsZeroException en tant qu'objet ex au cas où cela se produirait.
  22. Message à imprimer sur la console lorsque l'exception HeightIsZeroException est interceptée.
  23. Fin du bloc de gestion des exceptions.
  24. Suspendez la fenêtre de la console en attendant qu'un utilisateur agisse pour la fermer.
  25. Fin de la sous-procédure principale.
  26. Fin du module.

Lancer une exception dans VB.Net

Lors de la gestion des exceptions, vous pouvez choisir de lever un objet. Toutefois, cet objet doit hériter de la classe System.Exception, directement ou indirectement. Par exemple :

Exemple de levée d'exception dans VB.Net

Voici un exemple de levée d'exception en VB.Net :

Étape 1) Créez une nouvelle application console.

Étape 2) Utilisez le code suivant :

Module Module1

    Sub Main()
        Try
            Throw New ApplicationException("Throwing a custom exception")
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        Finally
            Console.WriteLine("The Finally Block")
        End Try
        Console.ReadKey()
    End Sub


End Module

Étape 3) Cliquez sur le bouton Démarrer dans la barre supérieure pour exécuter le code. Vous devriez obtenir ce qui suit :

Sortie console de l'instruction Throw en VB.Net affichant le message d'exception personnalisé

Voici une capture d'écran du code :

Exemple de code VB.Net pour lever une exception avec Try Catch Finally

Explication de Code:

  1. Création d'un module nommé Module1.
  2. Début de la sous-procédure principale.
  3. Début du code de gestion des erreurs.
  4. Lancer un objet d'exception. Ce code peut générer une exception, nous l'avons donc entouré d'un bloc Try/Catch.
  5. Attraper une exception en tant qu'objet ex si la ligne lève une exception.
  6. Impression du message d'exception sur la console au cas où cela se produirait.
  7. Le bloc Enfin à exécuter, qu'une exception soit interceptée ou non.
  8. Le message à imprimer sur la console lorsque le bloc Enfin est exécuté.
  9. Fin du code de gestion des exceptions.
  10. Mettez la console en pause pendant un moment en attendant qu'un utilisateur agisse pour la fermer.
  11. Fin de la sous-procédure principale.
  12. Fin du module.

FAQ

Oui. Une instruction Try est valide sans Catch à condition qu'elle contienne un bloc Finally. Cette forme Try Finally exécute le code de nettoyage mais ne gère pas l'exception elle-même.

Oui. Créez plusieurs blocs Catch pour gérer différents types d'exceptions. Classez-les du plus spécifique au moins spécifique, car VB.Net les vérifie séquentiellement et utilise la première exception rencontrée.

Presque toujours. La méthode `finally` s'exécute qu'une exception soit interceptée ou non, même après un `Return`. Elle est ignorée uniquement en cas d'instruction `End` ou d'exception `StackOverflowException`.

La méthode Throw relance l'exception courante et préserve sa pile d'origine. trace. Lancer ex réinitialise la pile tracL'instruction `e` est déplacée vers la ligne actuelle, masquant ainsi l'origine réelle de l'erreur. Il est préférable d'utiliser simplement `Throw`.

Une erreur de syntaxe est détectée par le compilateur avant l'exécution du programme. Une exception survient lors de l'exécution et peut être gérée par un bloc Try-Catch.

Les exceptions les plus fréquentes sont DivideByZeroException, NullReferenceException, IndexOutOfRangeException, FormatException et OverflowException. Elles héritent toutes de System.Exception et peuvent être interceptées individuellement.

Oui. Copilote GitHub Transforme un commentaire en langage naturel en un bloc Try Catch Finally complet et suggère le type d'exception approprié. Vérifiez toujours le gestionnaire généré.

Oui. Visual Studio IntelligenceCode propose des complétions contextuelles complètes pour les clauses Catch et les types d'exceptions, apprises à partir de milliers de projets open-source.

Résumez cet article avec :