Aide Collabora Office 24.04
Réinitialise les informations d'erreur et indique ce qui est exécuté ensuite.
Resume [ [0] | label | Next ]
0: réinitialise les informations d'erreur et exécute à nouveau l'instruction qui a causé l'erreur. 0 est facultatif.
label: réinitialise les informations d'erreur et reprend l'exécution à l'étiquette spécifiée de la sous routine active.
Next: réinitialise les informations d'erreur et exécute l'instruction suivant celle qui a causé l'erreur.
Les informations d'erreur sont compilées avec les fonctions Erl, Err et Error$.
Erl: numéro de ligne du module où l'erreur se produit.
Err: numéro de l'erreur
Error[$]: description de l'erreur.
L'utilisation de Resume pour réinitialiser les informations d'erreur empêche la propagation de la condition gérée aux routines d'appel.
Les routines de gestion des erreurs typiques sont les suivantes : alerter l'utilisateur, corriger l'erreur, consigner les informations sur les erreurs ou renvoyer des erreurs personnalisées qui fournissent des explications avec des instructions de résolution. Utilisez Resume label lorsque vous avez besoin de tels mécanismes.
Sub Error_Handling
try: On Error GoTo catch
' code de la routine ici
Error 91 ' erreur exemple
finally:
' code nettoyé de la routine ici
Exit Sub
catch:
Print Erl, Err, Error$
Resume finally
End Sub ' Error_Handling
Utilisez Resume Next, par exemple, lors du signalement d'anomalies rencontrées pour un processus d'itération qui ne doit pas être interrompu. Dans ce cas, plusieurs routines de gestion peuvent être nécessaires.
Sub Iteration
planets = Array("☿","♀","♁","♂","♃","♄","⛢","♆")
try:
On Error GoTo ReportAndProcessNext
For ndx = -3 To 11 Step 1
MsgBox planets(ndx)
Next
On Error GoTo 0 ' Stop error catching
finally:
Exit Sub
ReportAndProcessNext:
Print "Error "& Err &" at line "& Erl &" - "& Error$
Resume Next
End Sub ' Iteration
L'utilisation de Resume sans paramètres pour ré-exécuter l'instruction défectueuse peut s'adapter à certaines situations. Cependant, cela peut provoquer une boucle sans fin.