Maîtriser les erreurs et exceptions intégrées de Python
Erreurs et exceptions intégrées de Python
Découvrez comment Python signale les problèmes, la différence entre erreurs de syntaxe et erreurs d'exécution, et comment gérer les exceptions intégrées en toute confiance.
Vidéo : Gestion des exceptions Python
Quand vous exécutez un programme Python, l'interpréteur arrête l'exécution immédiatement s'il rencontre une erreur non gérée. Ces erreurs se divisent en deux grandes catégories :
- Erreurs de syntaxe — problèmes détectés pendant l'analyse.
- Erreurs logiques (exceptions) — problèmes qui surviennent pendant l'exécution du code.
Erreurs de syntaxe Python
Une erreur de syntaxe se produit quand le code source viole les règles grammaticales de Python. L'interpréteur vous pointe l'emplacement exact avec un accent circonflexe (^) dans le message d'erreur.
> >>> if a < 3
File "<interactive input>", line 1
if a < 3
^
SyntaxError: invalid syntax
Dans cet exemple, le deux-points (:) manquant après l'instruction if déclenche une SyntaxError.
Erreurs logiques Python (exceptions)
Les erreurs logiques, ou exceptions, ne surgissent qu'après que le code a passé la vérification de syntaxe. Exemples courants :
- Tentative de division par zéro (
ZeroDivisionError) - Ouverture d'un fichier inexistant (
FileNotFoundError) - Importation d'un module indisponible (
ImportError)
Quand une exception est levée, Python crée un objet exception. S'il reste non géré, une traceback est affichée, montrant la pile d'appels et la raison de l'échec.
> >>> 1 / 0
Traceback (most recent call last):
File "<string>", line 301, in runcode
File "<interactive input>", line 1, in <module>
ZeroDivisionError: division by zero
> >>> open("imaginaire.txt")
Traceback (most recent call last):
File "<string>", line 301, in runcode
File "<interactive input>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: 'imaginaire.txt'
Exceptions intégrées Python
L'interpréteur Python lève une large gamme d'exceptions intégrées pour signaler différentes conditions d'échec. Vous pouvez les lister avec l'extrait suivant :
print(dir(locals()['__builtins__']))
Voici une référence concise pour certaines des exceptions intégrées les plus fréquemment rencontrées et les situations qui les déclenchent :
| Exception | Cause de l'erreur |
|---|---|
AssertionError | Levée quand une instruction assert échoue. |
AttributeError | Levée quand une assignation ou référence d'attribut échoue. |
EOFError | Levée quand la fonction input() rencontre une condition de fin de fichier. |
FloatingPointError | Levée quand une opération à virgule flottante échoue. |
GeneratorExit | Levée quand la méthode close() d'un générateur est appelée. |
ImportError | Levée quand le module importé ne peut pas être trouvé. |
IndexError | Levée quand un index de séquence est hors limites. |
KeyError | Levée quand une clé est manquante dans un dictionnaire. |
KeyboardInterrupt | Levée quand l'utilisateur appuie sur Ctrl+C ou Suppr. |
MemoryError | Levée quand une opération dépasse la mémoire disponible. |
NameError | Levée quand une variable n'est pas trouvée dans la portée locale ou globale. |
NotImplementedError | Levée par des méthodes abstraites qui manquent d'implémentation. |
OSError | Levée pour les erreurs système (ex. : E/S de fichier). |
OverflowError | Levée quand un résultat arithmétique est trop grand pour être représenté. |
ReferenceError | Levée quand une référence faible proxy un objet ramassé par le garbage collector. |
RuntimeError | Levée pour les erreurs qui ne rentrent dans aucune autre catégorie. |
StopIteration | Levée par next() quand un itérateur est épuisé. |
SyntaxError | Levée quand l'analyseur rencontre une syntaxe invalide. |
IndentationError | Levée quand l'indentation est incorrecte. |
TabError | Levée quand l'indentation mélange tabulations et espaces de manière incohérente. |
SystemError | Levée quand l'interpréteur détecte une erreur interne. |
SystemExit | Levée par sys.exit(). |
TypeError | Levée quand une opération ou fonction reçoit un objet de type inapproprié. |
UnboundLocalError | Levée quand une variable locale est référencée avant assignation. |
UnicodeError | Levée pour les erreurs d'encodage ou décodage Unicode. |
UnicodeEncodeError | Levée pendant les erreurs d'encodage Unicode. |
UnicodeDecodeError | Levée pendant les erreurs de décodage Unicode. |
UnicodeTranslateError | Levée pendant les erreurs de traduction Unicode. |
ValueError | Levée quand une fonction reçoit un argument de type correct mais valeur inappropriée. |
ZeroDivisionError | Levée quand on divise ou prend le modulo par zéro. |
Si vous avez besoin d'un contrôle plus granulaire, Python vous permet de définir des classes d'exception personnalisées. Voir Exceptions définies par l'utilisateur Python pour plus de détails.
La gestion des exceptions est simple avec les blocs try, except et finally. Pour une exploration plus approfondie, référez-vous à Instructions try, except et finally Python.
Python
- Mots-clés et identifiants Python : Maîtriser les mots réservés et les conventions de nommage
- Instructions, indentation et commentaires en Python : Guide clair
- Variables, constantes et littéraux en Python – Guide complet
- Maîtriser la conversion et le transtypage de types en Python : Guide complet
- Maîtriser les E/S et l'importation de modules en Python : Guide pratique
- Comprendre les variables globales, locales et non locales en Python
- Maîtriser les nombres, la conversion de types et les mathématiques en Python
- Maîtriser les opérations sur les répertoires et fichiers en Python
- Maîtriser les exceptions personnalisées Python : guide pratique