|
|
 |
|
 |
Les
messages d'erreurs
| |
On ne peut pas dire que les outils de débuggage offerts par
VBscript soient des plus évolués. Pour un peu, on se croirait
revenu aux temps préhistoriques du Basic. Ainsi, corriger vos erreurs
en VBscript ressemble souvent au jeu des sept erreurs.
Pour ceux qui connaissent le Javascript, la gestion des erreurs de VBscript
est du même niveau que celle de Javascript, donc faible et peu évoluée.
|
| |
Les types d'erreurs.
Il y a 3 grandes catégories d'erreurs dans l'utilisation d'un
programme VBscript :
- les erreurs au chargement.
- les erreurs à l'exécution
- les erreurs de logique.
|
| |
Les erreurs au chargement
Au chargement du script par le browser, l'interpréteur VBscript
passe en revue les différentes erreurs qui peuvent empêcher
le bon déroulement de celui-ci.
Les erreurs au chargement, nombreuses lors de l'apprentissage de VBscript,
sont souvent dues à des fautes de frappe et/ou des erreurs de syntaxe.
Pour vous aider à déterminer l'erreur, VBscript affiche sa
fameuse boite de message d'erreur, vous indique le problème et le
texte de l'erreur. Des exemples classiques d'erreurs au chargement sont
des strings absents, des minuscules au lieu de majuscules, des variables
mal orthographiées.
Le gestionnaire d'erreur de VBscript bloque le script et il ne vous
reste plus qu'à corriger votre erreur. Voici un exemple de script
avec une erreur :
<HTML>
<HEAD>
<SCRIPT LANGUAGE="vbscript">
<!--
Sub Bouton1_OnClick
MsgBox "Ceci est du VBscript.
End Sub
-->
</SCRIPT>
</HEAD>
<BODY> etc.
Vous aurez remarqué qu'il manque les guillemets de fin au string
"Ceci est du VBscript".
VBscript affichera le message d'erreur suivant
:

Le message d'erreur vous signale qu'à la ligne 6, il y a un string
qui n'est pas terminé par des guillemets. Notez cependant que le
message n'est pas toujours aussi précis et qu'il faut parfois remonter
de plusieurs lignes pour trouver l'erreur effective.
|
| |
Les erreurs à l'exécution
Ici votre script se charge sans problème, mais cette satanée
boite de message d'erreurs apparaît lorsque l'exécution du
script est demandée. Alors que les erreurs au chargement étaient
surtout dues au mauvais usage de la syntaxe, les erreurs à l'exécution
(runtime error) proviennent d'un mauvais usage des commandes ou des objets
VBscript.
Un exemple d'erreur à l'exécution est un appel erroné
à une variable ou une fonction inexistante (car il y a, par exemple,
une erreur dans le nom de la variable ou de la fonction).
|
| |
Les erreurs de logique
Ce sont les plus vicieuses car le "débuggeur" de VBscript
ne signale bien entendu aucune erreur et votre script se déroule
correctement. Hélas, à l'arrivée, le résultat
ne correspond pas à celui espéré.
Il n'y a plus qu'à revoir la construction logique de votre script.
Cent fois sur le métier remettez votre ouvrage...
De nombreuses erreurs de logique sont dues à des valeurs de variables
incorrectes.
Voici quelques conseils :
- Dans le cas où l'utilisateur doit entrer une valeur, celle-ci
était-t-elle au bon format? N'est-il pas utile de prévoir
un petit script pour vérifier le format d'entrée ?
- On peut ajouter des points de contrôle de valeur de variable
ou de passage avec l'instruction MsgBox variable ou MsgBox "Point
de passage1"
|
| |
Les grands classiques des erreurs.
On peut dresser une liste d'erreurs que tous les débutants (et
même certains programmeurs confirmés) font ou feront tôt
ou tard.
- Soyez vigilant au nom des variables (case sensitive). Mavariable et
mavariable sont deux variables distinctes. Eviter d'utiliser des noms de
variables trop rapprochants.
- Le nom de la fonction a-t-il bien la même orthographe dans la
déclaration et dans l'appel. Le nom des fonctions est-il bien unique
dans le script?
- N'oubliez pas les guillemets avant et après les chaînes
de caractères.
- Avez-vous bien mis des virgules entre vos différents paramètres
ou arguments?
- Avez-vous placé votre déclaration de fin (End ...)? Avez-vous
placé la déclaration de fin au bon endroit dans le cas de
blocs de commandes imbriquées?
- Assurez-vous que les noms des objets VBscript sont corrects. Le piège
est que les objets ou fonctions VBscript commencent par une majuscule (MsgBox,
Day, Isdate...) mais que les propriétés commencent par une
minuscule (write).
- La confusion entre = opérateur d'affectation et = opérateur
de comparaison.
|
| |
On Error Resume Next
L'expression On Error Resume Next, propre à VBscript, permet
de poursuivre l'exécution d'un programme après une erreur
à l'exécution (runtime uniquement) et empêcher ainsi
qu'il soit bloqué par une fenêtre de message d'erreur. VBscript
ignore l'erreur et passe à la ligne suivante.
Exemple :
<HTML>
<BODY>
<SCRIPT language="VBS">
a = 100 / 0
MsgBox a
</SCRIPT>
</BODY>
</HTML>
|
<HTML>
<BODY>
<SCRIPT language="VBS">
On Error Resume Next
a = 100 / 0
MsgBox a
</SCRIPT>
</BODY>
</HTML> |
VBscript affiche une fenêtre d'erreur
(runtime error division par 0). |
VBscript ignore l'erreur et affiche
une boite de message vide
(car a n'a pas été calculé). |
Soulignons que cette astuce ne résout en rien l'erreur. Elle
l'ignore simplement, ce qui désactive les messages d'erreur.
|
| |
L'objet err
Avec l'objet err (objet interne de VBscript) et surtout ses propriétés,
il est possible de se fabriquer un mini outil de déboggage.
| err.number |
Contient le code d'erreur numérique lorsqu'une erreur se produit.
S'il n'y a pas d'erreur, la valeur est 0. Chaque type d'erreur a son propre
code. |
| err.description |
Contient une description de l'erreur correspondant au numéro
d'erreur. |
L'exemple précédent devient :
<HTML>
<BODY>
<SCRIPT language="VBS">
On Error Resume Next
a = 100 / 0
If err.number <> 0 then
MsgBox "Erreur : " & err.number & " " &
err.description
End if
</SCRIPT>
</BODY>
</HTML>
On teste s'il y a une erreur (err.number différent de 0). Avec
une boite de message, on affiche le numéro de code de l'erreur (err.number)
et sa description (err.description).
La boite de message affiche dans le cas présent Erreur : 11
Division by zero
|
|
|
 |
|
 |
|