d
Active ou désactive la gestion des erreurs.
Syntaxe
On Error Resume Next
On Error GoTo 0
Remarques
Si vous n'utilisez pas d'instruction On Error Resume Next dans votre code, toute erreur d'exécution qui survient peut entraîner l'affichage d'un message d'erreur et l'arrêt de l'exécution du code. Cependant, l'hôte exécutant le code détermine le comportement exact. L'hôte peut parfois choisir de gérer ces erreurs différemment. Dans certains cas, le débogueur de script peut être appelé au moment de l'erreur. Dans d'autres cas encore, il se peut qu'aucune indication ne signale la survenue d'une erreur car l'hôte ne veut pas en informer l'utilisateur. Là encore, cela dépend uniquement de la façon dont l'hôte gère les erreurs qui surviennent.
Dans toute procédure, une erreur n'est pas nécessairement fatale si la gestion des erreurs est activée quelque part dans la pile d'appels. Si la gestion locale des erreurs n'est pas activée dans une procédure et qu'une erreur survient, le contrôle est renvoyé à la pile d'appels jusqu'à ce qu'une procédure avec la gestion des erreurs activée soit trouvée, et l'erreur est alors gérée à ce stade. Si aucune procédure avec la gestion des erreurs activée n'est trouvée dans la pile d'appels, un message d'erreur apparaît à ce stade, et l'exécution est arrêtée ou l'hôte gère l'erreur selon le cas.
On Error Resume Next entraîne la poursuite de l'exécution avec l'instruction qui suit immédiatement l'instruction ayant provoqué l'erreur d'exécution ou avec l'instruction qui suit immédiatement l'appel sortant le plus récent de la procédure contenant l'instruction On Error Resume Next. L'exécution peut ainsi se poursuivre malgré une erreur d'exécution. Vous pouvez alors intégrer la routine de gestion des erreurs dans la procédure.
Une instruction On Error Resume Next devient inactive lorsqu'une autre procédure est appelée. Ainsi, vous devez exécuter une instruction On Error Resume Next dans chaque routine appelée si vous voulez disposer de la gestion des erreurs intégrée dans ces routines. Lorsqu'une procédure est quittée, la capacité de gestion des erreurs revient au type de gestion des erreurs qui était en place avant d'entrer dans la procédure quittée.
Utilisez On Error GoTo 0 pour désactiver la gestion des erreurs si vous l'avez précédemment activée avec On Error Resume Next.
L'exemple suivant illustre l'utilisation de l'instruction On Error Resume Next.
On Error Resume Next ' Ignore errors and continue execution
' Attempt to divide by zero (this will cause an error)
Dim result
result = 10 / 0
err1 = Err.Number
' Check if an error occurred
If err1 <> 0 Then
Err.Clear ' Clear the error
End If
' Script continues after error handling.
Explication :
La ligne result = 10 / 0 entraîne une erreur de division par zéro.
Etant donné que On Error Resume Next est actif, le script ne s'arrête pas et l'erreur est recherchée à l'aide de Err.Number.
L'erreur est ensuite effacée avec Err.Clear après avoir été gérée.
Points importants à prendre en compte :
Err.Number : cette propriété contient le code d'erreur en cas d'erreur. Si aucune erreur ne survient, sa valeur est 0.
Err.Description : fournit une description de la dernière erreur survenue.
Err.Clear : efface les informations sur l'erreur une fois que cette dernière a été gérée, de sorte que les erreurs suivantes n'ont pas d'incidence sur le script.
Exemple 1 :
On Error Resume Next ' Ignore errors and continue execution ' Attempt to divide by zero (this will cause an error) Dim result result = 10 / 0 err1 = Err.Number On Error GoTo 0 ' Default error handling is restored ' Now, any error that occurs will stop the script result = 10 / 0 'Error will be thrown