Qu'est-ce qu'une exception?
Une exception 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 vous divisez par zéro (0). Une exception sera soulevée.
Dans ce didacticiel Visual Basic, vous apprendrez:
- Qu'est-ce qu'une exception?
- Qu'est-ce que la gestion des exceptions?
- Syntaxe de Try / Catch
- Exemple de gestion des exceptions
- Exceptions définies par l'utilisateur
- Lancer des objets
Qu'est-ce que la gestion des exceptions?
Sauf exception, 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:
Mot-clé | Détail |
Essayer | Le travail du bloc Try est d'identifier le bloc de code pour lequel une exception spécifique sera activée. Il doit être suivi d'un ou plusieurs blocs catch. |
Capture | La capture de l'exception est effectuée dans ce bloc. Il s'agit d'un gestionnaire d'exceptions dans lequel l'exception est gérée. |
Pour terminer | Utilisez le bloc Enfin pour exécuter un ensemble d'instructions, qu'une exception se soit produite ou non. |
Lancer | Une exception est levée après l'apparition d'un problème. C'est le travail du mot-clé Throw. |
Syntaxe de Try / Catch
Les instructions Try / Catch utilisent 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 qui peut 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
Avec les instructions Try / Catch, vous pouvez séparer votre code de programme ordinaire du système de gestion des erreurs. Laissez-nous vous montrer comment gérer une exception à l'aide des mots clés Try, Catch et Then.
Étape 1) Créez une nouvelle application console.
Étape 2) Utilisez ce code:
Module Module1Sub divisionFunction(ByVal n1 As Integer, ByVal n2 As Integer)Dim answer As IntegerTryanswer = n1 \ n2Catch ex As DivideByZeroExceptionConsole.WriteLine("Exception: {0}", ex)FinallyConsole.WriteLine("Answer is: {0}", answer)End TryEnd SubSub Main()divisionFunction(4, 0)Console.ReadKey()End SubEnd Module
Étape 3) Cliquez sur le bouton Démarrer de la barre d'outils pour exécuter le code. Vous devriez obtenir la sortie suivante:
Voici une capture d'écran du code:
Explication du code:
- Création d'un module nommé Module1.
- Création d'une sous-procédure nommée divisionFunction avec deux arguments entiers n1 et n2. ByVal est un mot clé VB.NET indiquant que les valeurs des arguments seront passées par valeur.
- Création d'une variable entière nommée answer.
- Début du bloc Try / Catch. Nous devons entourer le code que nous soupçonnons de déclencher une exception avec ce bloc.
- 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 réponse variable. 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.
- Attraper l'exception nommée DivideByZeroException et attribuer le message d'exception généré à l'ex.
- Impression de texte sur la console pour informer l'utilisateur du type / nom de l'exception qui a été levée.
- Le bloc Enfin. Cela s'exécutera, qu'une exception soit interceptée ou non.
- Impression d'un texte sur la console montrant le résultat de l'opération de division.
- Fin du bloc Try, c'est-à-dire fin du code de gestion des erreurs.
- Fin de la sous-procédure de divisionFunction.
- Début de la sous-procédure principale.
- Appel / appel 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.
- Suspendre la fenêtre de la console en attendant que l'utilisateur prenne des mesures pour la fermer
- Fin de la sous-procédure principale.
- Fin du module.
Exceptions définies par l'utilisateur
VB.NET vous permet de définir vos propres exceptions. Vous pouvez obtenir des classes d'exceptions définies par l'utilisateur à partir de la classe ApplicationException. Laissez-nous le démontrer par un exemple:
Étape 1) Créez une nouvelle application console.
Étape 2) Utilisez le code suivant:
Module Module1Public Class HeightIsZeroException : Inherits ApplicationExceptionPublic Sub New(ByVal text As String)MyBase.New(text)End SubEnd ClassPublic Class HeightDim height As Integer = 0Sub showHeight()If (height = 0) ThenThrow (New HeightIsZeroException("Zero Height found"))ElseConsole.WriteLine("Height is: {0}", height)End IfEnd SubEnd ClassSub Main()Dim hght As Height = New Height()Tryhght.showHeight()Catch ex As HeightIsZeroExceptionConsole.WriteLine("HeightIsZeroException: {0}", ex.Message)End TryConsole.ReadKey()End SubEnd Module
Étape 3) Cliquez sur le bouton Démarrer de la barre supérieure pour exécuter le code. Vous devriez obtenir la sortie suivante:
Voici une capture d'écran du code:
Explication du code:
- Création d'un module nommé Module1.
- Création d'une classe d'exception nommée HeightIsZeroException. La classe hérite de toute la classe ApplicationException.
- Création d'une sous-procédure nommée New. Cela prendra un argument de chaîne nommé texte.
- Appel du constructeur de classe de base et lui passant l'argument ci-dessus.
- Fin de la nouvelle sous-procédure.
- Fin de la classe HeightIsZeroException.
- Création d'une classe nommée Height. Son modificateur d'accès public est Public, ce qui signifie qu'il sera accessible au public.
- Création d'une variable entière nommée Hauteur et initialisation de sa valeur à 0.
- Création d'une sous-procédure nommée showHeight ().
- Vérification du moment où la valeur de la variable Hauteur est 0. Nous avons utilisé la condition If… Then.
- Pour lancer l'exception HeightIsZeroException si la condition ci-dessus est vraie. Le message Hauteur zéro trouvée s'affiche lorsque cette exception est levée.
- La partie Else à exécuter lorsque la condition If n'est pas vraie.
- Message à imprimer sur la console indiquant la hauteur quand elle n'est pas 0.
- Fin de la condition If.
- Fin de la sous-procédure showHeight ().
- Fin de la classe Hauteur.
- Début de la sous-procédure principale.
- Création d'un objet nommé Height comme instance de la classe Height.
- Début du bloc de gestion des exceptions.
- 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 entraîner une exception. Par conséquent, nous l'avons entouré d'un code de gestion des exceptions.
- Attraper l'exception HeightIsZeroException en tant qu'objet ex au cas où elle se produirait.
- Le message à imprimer sur la console lorsque l'exception HeightIsZeroException est interceptée.
- Fin du bloc de gestion des exceptions.
- Suspendez la fenêtre de la console en attendant qu'un utilisateur prenne des mesures pour la fermer.
- Fin de la sous-procédure principale.
- Fin du module.
Lancer des objets
Dans la gestion des exceptions, vous pouvez choisir de lancer un objet. Cependant, l'objet doit être dérivé de System. Classe d'exception, directement ou indirectement. Par exemple:
Étape 1) Créez une nouvelle application console.
Étape 2) Utilisez le code suivant:
Module Module1Sub Main()TryThrow New ApplicationException("Throwing a custom exception")Catch ex As ExceptionConsole.WriteLine(ex.Message)FinallyConsole.WriteLine("The Finally Block")End TryConsole.ReadKey()End SubEnd Module
Étape 3) Cliquez sur le bouton Démarrer de la barre supérieure pour exécuter le code. Vous devriez obtenir ce qui suit:
Voici une capture d'écran du code:
Explication du code:
- Création d'un module nommé Module1.
- Début de la sous-procédure principale.
- Début du code de gestion des erreurs.
- Lancer un objet d'exception. Ce code peut générer une exception et nous l'avons donc entouré d'un bloc Try / Catch.
- Attraper une exception en tant qu'objet ex si la ligne lève une exception.
- Impression du message d'exception sur la console au cas où cela se produirait.
- Le bloc Enfin à exécuter, qu'une exception soit interceptée ou non.
- Le message à imprimer sur la console lorsque le bloc Enfin est exécuté.
- Fin du code de gestion des exceptions.
- Suspendez la console pendant un moment en attendant qu'un utilisateur prenne des mesures pour la fermer.
- Fin de la sous-procédure principale.
- Fin du module.
Résumé
- Une exception fait référence à un problème qui survient pendant l'exécution du programme provoqué par une circonstance inattendue.
- Si vous pensez que du code générera une exception, entourez-le d'un bloc Try / Catch.
- Le bloc Enfin vient après le bloc Try / Catch et s'exécute, qu'une exception soit interceptée ou non.
- VB.NET nous permet de créer des exceptions personnalisées.