Comment : conserver le contrôle si une erreur se produit (Visual Basic)

Vous pouvez utiliser la construction Try...Catch...Finally, instruction (Visual Basic) pour la gestion structurée des exceptions. Vous pouvez alors exécuter un bloc d'instructions particulier si une exception spécifiée se produit lors de l'exécution du code. Dans ce cas, le code lève l'exception que vous interceptez avec l'instruction Catch adéquate.

Pour exécuter un jeu d'instructions si votre code provoque une exception

  • Utilisez la construction Try...Catch... Finally pour y inclure le code qui peut provoquer une exception. Spécifiez ensuite le code à exécuter si une exception se produit, et fournissez éventuellement un jeu d'instructions à exécuter avant que le contrôle ne quitte la construction Try...Catch... Finally.

    L'exemple suivant tente de calculer la date et l'heure exactes 100 ans après la valeur fournie dans la variable Object de givenDate.

    Dim givenDate As Object
    Dim nextCentury As Date
    Try
        nextCentury = Microsoft.VisualBasic.DateAdd("yyyy", 100, givenDate)
        Catch thisExcep As System.ArgumentOutOfRangeException
        ' The resulting date/time is later than December 31, 9999.
        Catch thisExcep As System.ArgumentException
        ' At least one argument has an invalid value.
        Catch thisExcep As System.InvalidCastException
        ' The value in givenDate cannot be interpreted as a date/time.
        Catch
        ' An unforeseen exception has occurred.
        Finally
        ' This block is always run before leaving the Try structure.
    End Try
    

    Les trois premiers blocs Catch gèrent les exceptions que vous pouvez anticiper à partir de la fonction DateAdd. Vous pouvez traiter n'importe quelle exception inattendue dans le dernier bloc Catch.

    Dans tous les cas, le bloc Finally est toujours le dernier code exécuté avant de quitter la construction Try...Catch...Finally. Si vous créez ou ouvrez des ressources, telles que des objets ou des connexions de base de données dans un bloc Try ou Catch, vous pouvez utiliser le bloc Finally pour les fermer et les supprimer, le cas échéant.

    Si la variable d'exception thisExcep n'apparaît pas dans une instruction de déclaration, telle que Dim, l'instruction Catch avec la clause As est utilisée comme une déclaration.

Voir aussi

Tâches

Comment : transférer un contrôle hors d'une structure de contrôle (Visual Basic)

Comment : exécuter des instructions en fonction d'une ou de plusieurs conditions (Visual Basic)

Comment : tester plusieurs valeurs d'une expression (Visual Basic)

Concepts

Structures de décision (Visual Basic)

Structures de boucle (Visual Basic)

Autres structures de contrôle (Visual Basic)

Structures de contrôle imbriquées (Visual Basic)

Autres ressources

Flux de contrôle en Visual Basic