Vingt lignes rouges à l’écran
Le script qui calcule les ventes du jour s’arrête. L’écran affiche vingt lignes de texte en anglais, dont certaines en rouge.
Beaucoup de débutants ferment la fenêtre et demandent de l’aide tout de suite.
Pourtant, la réponse est souvent écrite sur une seule de ces lignes. Il suffit de savoir laquelle lire.
À la fin de cette leçon
Remarque
Je peux lire un message d’erreur et trouver la correction.
Mots-clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Message d’erreur | le texte qui dit pourquoi un programme s’arrête | |
| Trace d’appels | la liste des lignes traversées jusqu’à l’erreur | Traceback |
| Type d’erreur | le nom de la famille de l’erreur | ZeroDivisionError |
| Documentation | le mode d’emploi officiel d’un outil | |
| SSH | le moyen sûr d’ouvrir un terminal sur un serveur distant |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Lisez la dernière ligne en premier
Quand Python s’arrête, il affiche une trace d’appels. Elle se lit de bas en haut.
La dernière ligne donne le type d’erreur et un court message. C’est la ligne qui compte le plus.
Juste au-dessus, la trace indique le fichier et le numéro de ligne où tout s’est arrêté.
Faites planter un calcul
def prix_moyen(montants):
total = 0
for montant in montants:
total = total + montant
return total / len(montants)
# Les paniers de la journée, en euros.
print(prix_moyen([24, 31, 45]))
# Un panier vide fait planter le programme.
print(prix_moyen([]))
Exemple : des erreurs courantes et leur sens
| Dernière ligne | Ce que cela veut dire | Où regarder |
|---|---|---|
| ZeroDivisionError: division by zero | une division par 0 | la ligne du calcul |
| KeyError: 'ville' | cette clé n’existe pas | l’orthographe de la clé |
| NameError: name 'totl' is not defined | un nom inconnu | une faute de frappe |
| FileNotFoundError: ventes.csv | le fichier est introuvable | le chemin et pwd |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Une erreur fréquente
Attention
Beaucoup pensent que l’erreur vient toujours de la ligne indiquée. Souvent, c’est là qu’elle se voit, pas là qu’elle naît. Ici, la division échoue parce que la liste reçue est vide. Remontez vers la valeur qui arrive.
La documentation répond avant un forum
Copiez la dernière ligne de l’erreur dans un moteur de recherche. Retirez d’abord vos noms de fichiers et vos données.
Pour une commande, lancez commande --help ou man commande. Pour Python, ouvrez la documentation officielle.
La documentation dit ce qui est vrai. Un forum dit ce qui a marché pour quelqu’un.
Lisez l’aide d’une commande
# La plupart des commandes ont une aide intégrée.
grep --help | head -n 8
# À vous : affichez le début de l’aide de wc.
Exemple : poser une bonne question
| Question vague | Question utile |
|---|---|
| Mon script ne marche pas. | prix_moyen plante avec ZeroDivisionError quand la liste est vide. |
| J’ai une erreur, vous pouvez regarder ? | Voici la dernière ligne, la commande lancée et ce que j’attendais. |
| Ça marchait hier. | Ça marchait hier. Depuis, j’ai changé le fichier ventes.csv. |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
SSH vous emmène sur le serveur
Souvent, l’erreur se produit sur un serveur, pas sur votre poste. Pour y lire les journaux, on s’y connecte avec SSH.
ssh camille@srv-paie-lyon ouvre un terminal sur ce serveur, au nom de camille. Ensuite, pwd, ls et grep marchent comme d’habitude.
Le bloc suivant montre un refus, puis une connexion réussie.
Une connexion SSH, refusée puis réussie
$ ssh camille@srv-paie-lyon
camille@srv-paie-lyon: Permission denied (publickey).
$ ssh -i ~/.ssh/cle_travail camille@srv-paie-lyon
Welcome to Ubuntu 24.04 LTS
camille@srv-paie-lyon:~$