|
Dans une application digne
de ce nom, même lorsqu’une erreur se produit (fichier
introuvable, mauvaise saisie au clavier, etc.), elle ne
donne pas lieu à un plantage inopiné du programme: elle
est plutôt gérée par lui.
Err
Voici un objet qui n'est
pas un contrôle.
Il ne possède pas d'existence graphique, mais est
utilisée par toute application pour emmagasiner
l'état des erreurs que
celle-ci a éventuellement provoquée.
Cet objet possède trois
propriétés:
- Number:
Le code permettant d'identifier cette erreur.
- Description:
Quelques explications sur la nature de l'erreur.
- Source:
L'objet à l'origine de l'erreur.
Gestion des
erreurs
Toute erreur dans une
procédure provoque un événement appelé Error.
On devrait donc, au début
de chaque procédure susceptible de provoquer des erreurs,
placer une instruction du genre de celle-ci:
On error Goto
Étiquette
Une étiquette
est un sous-titre
à l'intérieur de la procédure se terminant par le signe
deux-points
(:). L’idée est
que si une erreur, quelle qu’elle soit, survient au
cours de cette procédure, au lieu de sa planter bêtement,
l’application ira gentiment rechercher l’étiquette
que vous avez désignée, et exécutera son code. De
même, pour éviter que le déroulement normal de la procédure
n’exécute lce qui se trouve sous l’étiquette, il
faudra forcer la
sortie de la
procédure avant cette étiquette par l’instruction Exit
Sub.
Exemples
Public Sub Division()
Dim Result as Integer
On Error GoTo Dommage
Result = 12 / 0
Exit Sub
Dommage:
Msgbox("Diviser par zéro,
ce n’est pas malin!")
End Sub
Dans l'exemple
précédent, l'erreur provoque un branchement
à l'étiquette Dommage:
et le message est affiché avant que la procédure ne se
termine.
Sub Main ( )
On Error GoTo ErreurFatale
If Dir ("C:\esls\Rien.txt")
= False Then
MsgBox "Ce fichier n' existe pas"
End If
Exit Sub
ErreurFatale:
MsgBox "N° erreur:"&Err.Number
& ", "& Err.Description
End Sub
Ce second exemple
produit un branchement
à une étiquette
comme le premier, mais cette fois, on affiche le numéro
de l'erreur (Err.Number)
et sa description (Err.Description).
|