VBA - Gestion des erreurs

Il existe trois types d'erreurs de programmation: (a) les erreurs de syntaxe, (b) les erreurs d'exécution et (c) les erreurs logiques.

Erreurs de syntaxe

Les erreurs de syntaxe, également appelées erreurs d'analyse, se produisent au moment de l'interprétation de VBScript. Par exemple, la ligne suivante provoque une erreur de syntaxe car il manque une parenthèse fermante.

Function ErrorHanlding_Demo()
   dim x,y
   x = "Tutorialspoint"
   y = Ucase(x
End Function

Erreurs d'exécution

Les erreurs d'exécution, également appelées exceptions, se produisent pendant l'exécution, après interprétation.

Par exemple, la ligne suivante provoque une erreur d'exécution car ici la syntaxe est correcte, mais au moment de l'exécution, elle tente d'appeler fnmultiply, qui est une fonction non existante.

Function ErrorHanlding_Demo1()
   Dim x,y
   x = 10
   y = 20
   z = fnadd(x,y)
   a = fnmultiply(x,y)
End Function

Function fnadd(x,y)
   fnadd = x + y
End Function

Erreurs logiques

Les erreurs logiques peuvent être le type d'erreurs le plus difficile à localiser. Ces erreurs ne sont pas le résultat d'une erreur de syntaxe ou d'exécution. Au lieu de cela, ils se produisent lorsque vous faites une erreur dans la logique qui anime votre script et que vous n'obtenez pas le résultat attendu.

Vous ne pouvez pas détecter ces erreurs, car le type de logique que vous souhaitez mettre dans votre programme dépend des besoins de votre entreprise.

Par exemple, diviser un nombre par zéro ou un script écrit qui entre en boucle infinie.

Objet Err

Supposons que si nous avons une erreur d'exécution, l'exécution s'arrête en affichant le message d'erreur. En tant que développeur, si nous voulons capturer l'erreur, alorsError L'objet est utilisé.

Exemple

Dans l'exemple suivant, Err.Number donne le numéro d'erreur et Err.Description donne la description de l'erreur.

Err.Raise 6   ' Raise an overflow error.
MsgBox "Error # " & CStr(Err.Number) & " " & Err.Description
Err.Clear   ' Clear the error.

La gestion des erreurs

VBA active une routine de gestion des erreurs et peut également être utilisé pour désactiver une routine de gestion des erreurs. Sans une instruction On Error, toute erreur d'exécution qui se produit est fatale: un message d'erreur s'affiche et l'exécution s'arrête brusquement.

On Error { GoTo [ line | 0 | -1 ] | Resume Next }

Sr.No. Mot-clé et description
1

GoTo line

Active la routine de gestion des erreurs qui commence à la ligne spécifiée dans l'argument de ligne requis. La ligne spécifiée doit suivre la même procédure que l'instruction On Error, sinon une erreur de compilation se produira.

2

GoTo 0

Désactive le gestionnaire d'erreurs activé dans la procédure en cours et le réinitialise à Nothing.

3

GoTo -1

Désactive l'exception activée dans la procédure actuelle et la réinitialise à Nothing.

4

Resume Next

Spécifie que lorsqu'une erreur d'exécution se produit, le contrôle accède à l'instruction immédiatement après l'instruction où l'erreur s'est produite et l'exécution se poursuit à partir de ce point.

Exemple

Public Sub OnErrorDemo()
   On Error GoTo ErrorHandler   ' Enable error-handling routine.
   Dim x, y, z As Integer
   x = 50
   y = 0
   z = x / y   ' Divide by ZERO Error Raises
  
   ErrorHandler:    ' Error-handling routine.
   Select Case Err.Number   ' Evaluate error number.
      Case 10   ' Divide by zero error
         MsgBox ("You attempted to divide by zero!")
      Case Else
         MsgBox "UNKNOWN ERROR  - Error# " & Err.Number & " : " & Err.Description
   End Select
   Resume Next
End Sub