Gérer les erreurs avec try / except
Ce module présente la gestion des erreurs en Python. L’objectif est de rendre
les scripts plus robustes, notamment lors des saisies utilisateur, de la lecture
de fichiers ou des connexions réseau.
Quand un programme rencontre une erreur non gérée, il plante et s’arrête.
Avec try, on peut gérer certaines erreurs proprement et afficher
un message compréhensible pour l’utilisateur.
try / except peut réagir proprement.
Le bloc try contient le code risqué. Le bloc except
contient le code exécuté si une erreur se produit.
except: seul capture toutes les erreurs. C’est pratique pour découvrir,
mais il vaut mieux ensuite capturer une erreur précise.
Il est préférable d’indiquer le type d’erreur que l’on souhaite gérer. Cela évite de masquer des bugs importants.
ValueError correspond à une conversion impossible,
par exemple int("abc").
| Erreur | Situation fréquente |
|---|---|
ValueError |
Conversion impossible : int("abc") |
FileNotFoundError |
Fichier absent |
ZeroDivisionError |
Division par zéro |
IndexError |
Index hors liste ou hors chaîne |
ConnectionRefusedError |
Connexion réseau refusée |
TimeoutError |
Temps d’attente dépassé |
Si un fichier n’existe pas, Python peut déclencher une erreur
FileNotFoundError.
Le bloc else s’exécute seulement si aucune erreur n’a eu lieu dans
le bloc try.
Le bloc finally s’exécute toujours, qu’il y ait une erreur ou non.
finally est utile pour exécuter une action finale, comme fermer
une ressource ou afficher un message de fin.
On peut récupérer le message exact d’une erreur avec as e.
Le module ipaddress permet de vérifier si une adresse IP saisie
par l’utilisateur est valide.
Lors d’une connexion réseau, plusieurs erreurs peuvent se produire : serveur absent, connexion refusée, délai dépassé, etc.
ValueError.
try contient d’instructions, plus il devient difficile
d’identifier quelle ligne a provoqué l’erreur.
except capture tout. Le second ne sera jamais exécuté.
Les erreurs précises doivent être placées avant une erreur générale.
Voici les notions essentielles à retenir pour ce module.
try contient le code susceptible de provoquer une erreur.except permet de gérer l’erreur.else s’exécute seulement si aucune erreur n’a eu lieu.finally s’exécute toujours.