Gérer les erreurs
Tous les programmeurs font des erreurs, tous les jours. Ce qui compte, c'est de savoir les comprendre et les prévoir.
Lire un message d'erreur
Quand CoddyRun rencontre un problème, il arrête le programme et affiche un message qui indique la ligne et la cause. Par exemple, une division par zéro :
dividende est un nombre vaut 10
diviseur est un nombre vaut 0
affiche dividende / diviseur
Le programme s'arrête avec le message Division par zéro. Prends l'habitude de lire le message en entier : il dit presque toujours où regarder.
Les erreurs les plus courantes : un fin si oublié, une variable utilisée sans avoir été déclarée, un texte sans apostrophe de fermeture, ou une case de tableau qui n'existe pas.
essayer et attraper
Certaines erreurs ne dépendent pas de toi : un utilisateur qui tape « douze » au lieu de 12, par exemple. Pour qu'elles n'arrêtent pas le programme, on les attrape :
age est un nombre
essayer
demande 'Ton âge ? ' dans age
affiche 'Dans 10 ans, tu auras ' + (age + 10) + ' ans.'
attraper
affiche 'Ce n’est pas un nombre !'
fin essayer
affiche 'Le programme continue.'
- Les instructions entre
essayer et attraper sont exécutées normalement. - Si l'une d'elles provoque une erreur, CoddyRun saute directement au bloc
attraper. - Dans tous les cas, le programme continue après
fin essayer.
Question : L'utilisateur tape douze. Quelle ligne est affichée en premier ? — Ce n’est pas un nombre !. La saisie n'est pas un nombre : l'erreur fait sauter directement au bloc attraper.
Vérifier plutôt que réparer
Une autre stratégie : récupérer la réponse dans un texte, la vérifier avec est_nombre, et redemander tant qu'elle n'est pas correcte :
reponse est un texte
age est un nombre
valide est un booléen vaut faux
tant que non valide
demande 'Ton âge ? ' dans reponse
si est_nombre(reponse) alors
age vaut convertir_nombre(reponse)
valide vaut vrai
sinon
affiche 'Merci de taper un nombre, par exemple 12.'
fin si
fin tant que
affiche 'Merci ! Tu as ' + age + ' ans.'
est_nombre répond vrai si le texte représente un nombre, et convertir_nombre le transforme en nombre. Cette boucle ne laisse passer que des réponses valides.
Prévoir les cas limites
Le meilleur moyen d'éviter une erreur, c'est d'y penser avant :
fonction moyenneSure(total, effectif)
si effectif = 0 alors
retourne 0
fin si
retourne total / effectif
fin fonction
affiche moyenneSure(54, 4) // 13,5
affiche moyenneSure(0, 0) // 0, sans erreur
Avant d'écrire un calcul, demande-toi : « Et si la valeur était 0 ? Vide ? Négative ? »
En résumé
- Un message d'erreur indique la ligne et la cause : lis-le en entier.
essayer ... attraper ... fin essayer empêche une erreur d'arrêter le programme.est_nombre et convertir_nombre permettent de vérifier une saisie.- Penser aux cas limites (zéro, vide, négatif) évite bien des erreurs.