Comment gérer les exceptions en Python (Try-Except-Finally)
Apprenez à gérer les exceptions en Python à l’aide des blocs try, except, else et enfin. Écrivez du code Python sans erreur et résistant aux plantages.
Aperçu
Un logiciel robuste doit être prêt à gérer des conditions inattendues, telles que des fichiers manquants, des entrées utilisateur non valides, des pannes de base de données ou des interruptions de réseau. Lorsqu'une erreur se produit en Python, elle déclenche une exception. Si elles ne sont pas gérées, les exceptions arrêtent immédiatement votre programme et impriment une pile de traçage.
Le principal outil de Python pour gérer les erreurs d'exécution est le bloc « try-sauf ». Vous placez le code susceptible de générer une erreur dans le bloc « try » et définissez le code de gestion des erreurs dans un ou plusieurs blocs « except ». Spécifier la classe d'exception exacte (comme `ValueError` ou `ZeroDivisionError`) est fortement recommandé, car la capture de toutes les exceptions génériques (`sauf :`) peut masquer des bogues.
Pour rendre votre flux d'exceptions plus expressif, Python fournit deux blocs supplémentaires : "else" et "finally". Le bloc « else » ne s'exécute que si aucune exception n'a été levée dans le bloc « try », ce qui est utile pour le code qui ne doit s'exécuter qu'en cas de succès. Le bloc «finally» s'exécute *toujours*, qu'une exception se soit produite ou non, ce qui en fait l'endroit idéal pour les nettoyages comme la fermeture de fichiers ou de connexions à une base de données.
Sortie de code et d'exécution
Ce script démontre une gestion robuste des erreurs en Python en utilisant try, except, else et enfin.
def divide_numbers(a, b):
try:
# Code that might raise an exception
result = a / b
except ZeroDivisionError:
# Handling a specific exception
print("Error: Cannot divide by zero!")
except TypeError:
# Handling another exception type
print("Error: Inputs must be numbers!")
else:
# Run only if try block succeeded
print(f"Success! Result of {a}/{b} is {result}")
finally:
# Runs no matter what
print("Division attempt completed.")
divide_numbers(10, 2)
print("---")
divide_numbers(10, 0)Success! Result of 10/2 is 5.0
Division attempt completed.
---
Error: Cannot divide by zero!
Division attempt completed.Mise en œuvre étape par étape
- Placez le code qui pourrait échouer dans un bloc try.
- Détectez des types d’erreurs spécifiques avec les blocs except ExceptionType: pour gérer les échecs avec élégance.
- Utilisez else pour le code qui doit s’exécuter uniquement sur les blocs try réussis.
- Utilisez-le enfin pour garantir l'exécution des actions de nettoyage quelles que soient les erreurs.
Foire aux questions
Puis-je intercepter plusieurs exceptions dans un seul bloc except ?
Oui, vous pouvez les transmettre sous forme de tuple : except (ValueError, TypeError) comme e :.
Comment puis-je déclencher mes propres exceptions ?
Utilisez le mot-clé raise suivi de l'instance d'exception : raise ValueError("Valeur de configuration invalide").
Sujets connexes
Apprenez à convertir une chaîne en entier en Python à l'aide de la fonction int(). Gérez les erreurs en toute sécurité et convertissez les nombres binaires, octaux ou hexadécimaux.
Comment lire un fichier en PythonApprenez à lire des fichiers en Python. Maîtrisez l'instruction with open, readline, readlines et gérez en toute sécurité les exceptions de fichiers.
Comment écrire dans un fichier en PythonApprenez à écrire du texte dans des fichiers en Python. Maîtrisez la différence entre les modes d'écriture ("w") et d'ajout ("a") avec des gestionnaires de contexte sécurisés.
Ressources Python recommandées
Développez vos connaissances avec des didacticiels interactifs, des aide-mémoire et des comparaisons de codes associés.
Boucles Python
Apprenez à utiliser les boucles Python pour parcourir les données. Maîtrisez les bonnes pratiques pour les boucles, while, break, continue et loop avec des exemples interactifs.
Aide-mémoire sur les méthodes de chaîne Python
Un guide de référence complet pour la manipulation des chaînes Python. Maîtrisez le formatage, la recherche, le fractionnement, le remplacement et la vérification des propriétés des chaînes.
Python vs JavaScript : quel langage de programmation est le meilleur ?
Une comparaison complète entre Python et JavaScript. Explorez les différences de syntaxe, les performances, les cas d'utilisation (backend et frontend) et des exemples de codage.