Chargement...

Codes d'erreur Python

Les codes d'erreur Python représentent un ensemble d’exceptions et d’erreurs signalées par l’interpréteur lorsque le programme rencontre des situations inattendues. Comprendre ces codes est essentiel pour les développeurs avancés afin de faciliter le débogage, assurer la robustesse du code et améliorer la maintenabilité des applications. Dans le développement logiciel, les erreurs apparaissent lorsqu’une syntaxe est incorrecte, lorsqu’il y a un conflit de type, un accès à des ressources inexistantes ou des erreurs logiques. Les concepts clés incluent la syntaxe, les types d’exceptions, le débogage et la gestion des erreurs. En maîtrisant les codes d’erreur Python, le développeur peut localiser rapidement la source du problème, utiliser des blocs try/except pour gérer efficacement les exceptions et consigner des informations diagnostiques utiles pour la production. Ce document offre une vue complète des erreurs courantes, de leurs conditions de déclenchement, des techniques de débogage et des meilleures pratiques pour la gestion des exceptions dans des applications backend complexes. Les lecteurs apprendront à construire des systèmes stables et fiables, tout en minimisant les risques de plantage et de perte de données.

Considérons un service backend qui lit des entrées utilisateur, traite des fichiers et interagit avec une base de données. Des erreurs telles que FileNotFoundError, ValueError ou ZeroDivisionError peuvent survenir. Pour assurer la continuité du service, les opérations susceptibles d’échouer sont placées dans un bloc try, et chaque type d’exception est capturé avec un bloc except approprié. Cela permet de définir des stratégies de gestion spécifiques, de consigner les informations de débogage et de fournir des mécanismes de secours. Le bloc finally garantit que les ressources critiques, comme les fichiers ou les connexions à la base de données, sont correctement libérées, indépendamment de la survenue d’une erreur. Ce schéma empêche les plantages du programme et améliore la fiabilité et la maintenabilité du système. Dans les applications backend réelles, une gestion adéquate des erreurs est cruciale pour la stabilité, la performance et la confiance des utilisateurs.

Example

python
PYTHON Code
def traiter_donnees():
try:
# NameError : utilisation d'une variable non définie
print(variable_inexistante)

# ZeroDivisionError : division par zéro
resultat = 10 / 0

# ValueError : conversion de type invalide
nombre = int("abc")

# FileNotFoundError : fichier inexistant
with open("fichier_inexistant.txt", "r") as f:
contenu = f.read()

# AttributeError : appel d'une méthode inexistante
[].appendx(1)

except NameError as ne:
print(f"Capture NameError : {ne}")
except ZeroDivisionError as zde:
print(f"Capture ZeroDivisionError : {zde}")
except ValueError as ve:
print(f"Capture ValueError : {ve}")
except FileNotFoundError as fe:
print(f"Capture FileNotFoundError : {fe}")
except AttributeError as ae:
print(f"Capture AttributeError : {ae}")
except Exception as e:
print(f"Capture exception générale : {e}")
finally:
print("Exécution des opérations de nettoyage (fermeture de fichiers, libération de ressources)")

traiter_donnees()

📊 Comprehensive Reference

Error Description When It Occurs Example Notes
SyntaxError Erreur de syntaxe Code invalide eval('x === 2') Détectée à la compilation
IndentationError Erreur d'indentation Indentation incohérente if True:\nprint("Hi") Sous-classe de SyntaxError
TabError Mélange tabulations et espaces Tabs et espaces mélangés <tab> <space> print("Hi") Maintenir cohérence indentation
NameError Variable non définie Utilisation d'une variable non déclarée print(x) Erreur fréquente au débogage
TypeError Type incorrect Opération avec types incompatibles 5 + "5" Type dynamique Python
ValueError Valeur invalide Conversion ou opération sur valeur incorrecte int("abc") Vérification des entrées
IndexError Indice hors limites Accès hors de la liste lst = []; lst[1] Vérifier longueur avant accès
KeyError Clé manquante Clé absente dans dictionnaire d = {}; d['x'] Utiliser dict.get() pour prévenir
AttributeError Attribut inexistant Objet sans l'attribut ou méthode [].appendx(1) Erreur nom méthode
ZeroDivisionError Division par zéro Diviseur est zéro 10 / 0 Vérifier diviseur
ImportError Module inexistant Module non trouvé import non_module Vérifier installation module
ModuleNotFoundError Module introuvable Module absent import non_existent_module Python 3.6+
FileNotFoundError Fichier inexistant Ouverture d’un fichier absent open("nofile.txt") Vérifier chemin fichier
IsADirectoryError Attendu fichier mais répertoire open("folder") OS spécifique
NotADirectoryError Attendu répertoire mais fichier os.listdir("file.txt") OS spécifique
PermissionError Permission insuffisante Accès fichier interdit open("/root/file") Vérifier permissions utilisateur
OSError Erreur système Problème système ou OS os.remove("/root/file") Base de plusieurs erreurs
OverflowError Dépassement numérique Valeur trop grande 2.0**10000 Rare en Python 3
RecursionError Récursion trop profonde Appel récursif excessif def f(): f(); f() sys.setrecursionlimit()
MemoryError Mémoire insuffisante Allocation objet volumineux échoue a = 'a' * 10**10 Dépend mémoire système
StopIteration Itérateur épuisé Next sur itérateur vide next(iter([])) Itérateurs personnalisés
AssertionError Assertion échouée assert False Vérification condition
FloatingPointError Erreur flottante Opération flottante invalide numpy.seterr(all='raise') Numpy
UnicodeError Erreur encodage/décodage "ü".encode("ascii") Vérifier encodage
UnicodeDecodeError Décodage impossible b'\xff'.decode('utf-8') Lecture fichier
UnicodeEncodeError Encodage impossible "ü".encode("ascii") Encodage incorrect
RecursionWarning Avertissement récursion Recursion trop profonde import warnings Non fatal
DeprecationWarning Fonction obsolète Utilisation fonction dépréciée warnings.warn("deprecated") Migration
RuntimeWarning Avertissement runtime Problème potentiel à l’exécution import warnings Non fatal
FutureWarning Avertissement futur Fonction changera warnings.warn("future") Compatibilité
UserWarning Avertissement utilisateur Avertissement personnalisé warnings.warn("user") Non fatal
PendingDeprecationWarning Obsolescence prochaine Fonction potentiellement dépréciée warnings.warn("pending") Rare
ResourceWarning Ressource non libérée Fichier non fermé open("file") Python 3+
ArithmeticError Erreur arithmétique Échec opération mathématique int("x")/0 Base arithmétique
BufferError Erreur tampon Opération tampon invalide memoryview(b'').release() Rare
ConnectionError Erreur connexion Échec réseau requests.get("bad_url") Base réseau
BrokenPipeError Pipe cassé Écriture pipe fermé os.write(fd, b'data') Unix
ChildProcessError Erreur processus fils Échec processus fils os.waitpid(-1) Rare
EOFError Fin fichier inattendue Fin de l'entrée input() EOF Entrée vide
EnvironmentError Erreur environnement Problème OS ou système os.remove("/root/file") OSError base
GeneratorExit Générateur fermé gen.close() Utilisé avec générateurs
IOError Erreur I/O Échec lecture/écriture open("/root/file") Python 3 -> OSError
InterruptedError Interruption Appel système interrompu os.read(fd, 0) Unix
LookupError Erreur de recherche Recherche invalide d['x'] Base erreurs lookup
ReferenceError Référence invalide Référence faible périmée import weakref Rare
RuntimeError Erreur runtime raise RuntimeError() Erreur générique
StopAsyncIteration Fin itération async async for Python 3.5+
SyntaxWarning Avertissement syntaxe Syntaxe douteuse warnings.warn("syntax") Ne stoppe pas programme
SystemError Erreur système Erreur interne Python sys._getframe(0) Rare
SystemExit Sortie système Appel sys.exit() Quitte programme
TimeoutError Timeout Opération dépasse délai socket.settimeout() Appel réseau
UnboundLocalError Variable locale non liée Référence avant affectation x=1; def f(): print(x); x=2 NameError subclass
ZeroDivisionError Division par zéro Diviseur = 0 10 / 0 Vérifier diviseur

📊 Complete Properties Reference

Error Exception Type Default Behavior Description Compatibility
SyntaxError Exception Arrêt programme Erreur syntaxe Toutes versions Python
IndentationError SyntaxError Arrêt programme Erreur indentation Toutes versions Python
TabError IndentationError Arrêt programme Mélange tabulations et espaces Toutes versions Python
NameError Exception Arrêt programme Variable non définie Toutes versions Python
TypeError Exception Arrêt programme Erreur de type Toutes versions Python
ValueError Exception Arrêt programme Valeur invalide Toutes versions Python
IndexError Exception Arrêt programme Indice hors limites Toutes versions Python
KeyError Exception Arrêt programme Clé absente Toutes versions Python
AttributeError Exception Arrêt programme Attribut/méthode manquante Toutes versions Python
ZeroDivisionError ArithmeticError Arrêt programme Division par zéro Toutes versions Python
ImportError Exception Arrêt programme Module non trouvé Toutes versions Python
ModuleNotFoundError ImportError Arrêt programme Module manquant Python 3.6+
FileNotFoundError OSError Arrêt programme Fichier inexistant Python 3+
IsADirectoryError OSError Arrêt programme Fichier attendu mais répertoire Python 3+
NotADirectoryError OSError Arrêt programme Répertoire attendu mais fichier Python 3+
PermissionError OSError Arrêt programme Permission insuffisante Python 3+
OSError Exception Arrêt programme Erreur OS Toutes versions Python
OverflowError ArithmeticError Arrêt programme Dépassement numérique Toutes versions Python
RecursionError RuntimeError Arrêt programme Récursion trop profonde Python 3+
MemoryError Exception Arrêt programme Mémoire insuffisante Toutes versions Python
StopIteration Exception Arrêt programme Itérateur épuisé Toutes versions Python
AssertionError Exception Arrêt programme Assertion échouée Toutes versions Python
FloatingPointError ArithmeticError Arrêt programme Erreur flottante Toutes versions Python
UnicodeError ValueError Arrêt programme Erreur encodage/décodage Toutes versions Python
UnicodeDecodeError UnicodeError Arrêt programme Décodage impossible Toutes versions Python
UnicodeEncodeError UnicodeError Arrêt programme Encodage impossible Toutes versions Python
RecursionWarning Warning Programme continue Avertissement récursion Toutes versions Python
DeprecationWarning Warning Programme continue Fonction obsolète Toutes versions Python
RuntimeWarning Warning Programme continue Avertissement runtime Toutes versions Python
FutureWarning Warning Programme continue Avertissement futur Toutes versions Python
UserWarning Warning Programme continue Avertissement utilisateur Toutes versions Python
PendingDeprecationWarning Warning Programme continue Obsolescence prochaine Toutes versions Python
ResourceWarning Warning Programme continue Ressource non libérée Python 3+
ArithmeticError Exception Arrêt programme Erreur arithmétique Toutes versions Python
BufferError Exception Arrêt programme Erreur tampon Toutes versions Python
ConnectionError OSError Arrêt programme Erreur connexion Python 3+
BrokenPipeError OSError Arrêt programme Pipe cassé Python 3+
ChildProcessError OSError Arrêt programme Erreur processus fils Python 3+
EOFError Exception Arrêt programme Fin fichier inattendue Toutes versions Python
EnvironmentError OSError Arrêt programme Erreur environnement Python 3+
GeneratorExit Exception Arrêt programme Générateur fermé Toutes versions Python
IOError OSError Arrêt programme Erreur I/O Python 3+
InterruptedError OSError Arrêt programme Interruption système Python 3+
LookupError Exception Arrêt programme Erreur de recherche Toutes versions Python
ReferenceError Exception Arrêt programme Référence invalide Python 3+
RuntimeError Exception Arrêt programme Erreur runtime Toutes versions Python
StopAsyncIteration Exception Arrêt programme Fin itération async Python 3.5+
SyntaxWarning Warning Programme continue Avertissement syntaxe Toutes versions Python
SystemError Exception Arrêt programme Erreur interne Python Toutes versions Python
SystemExit Exception Arrêt programme Sortie système Toutes versions Python
TimeoutError OSError Arrêt programme Timeout Python 3+
UnboundLocalError NameError Arrêt programme Variable locale non liée Python 3+
ZeroDivisionError ArithmeticError Arrêt programme Division par zéro Toutes versions Python

🧠 Testez Vos Connaissances

Prêt à Commencer

Test Your Knowledge

Testez votre compréhension des codes d'erreur Python

3
Questions
🎯
70%
Pour Réussir
♾️
Temps
🔄
Tentatives

📝 Instructions

  • Lisez chaque question attentivement
  • Sélectionnez la meilleure réponse pour chaque question
  • Vous pouvez refaire le quiz autant de fois que vous le souhaitez
  • Votre progression sera affichée en haut