La gestion des exceptions est un aspect crucial du développement Python qui permet de créer des applications robustes et fiables. Dans cet article, nous explorerons les meilleures pratiques de gestion des exceptions en Python, accompagnées d’exemples concrets et de tests pour renforcer votre compréhension.
Concepts fondamentaux de la gestion des exceptions
1. Structure de base try/except
La structure try/except est le fondement de la gestion des exceptions en Python :
try:
# Code susceptible de générer une exception
resultat = 10 / 0
except ZeroDivisionError:
print("Division par zéro impossible")
Capture de plusieurs exceptions
Vous pouvez gérer plusieurs types d’exceptions dans un même bloc :
try:
# Code susceptible de générer différentes exceptions
valeur = int(input("Entrez un nombre : "))
resultat = 10 / valeur
except ValueError:
print("Entrée invalide. Veuillez entrer un nombre.")
except ZeroDivisionError:
print("Division par zéro impossible")
Utilisation de la clause else
La clause else s’exécute si aucune exception n’est levée :
try:
valeur = int(input("Entrez un nombre : "))
except ValueError:
print("Entrée invalide")
else:
print(f"Vous avez entré le nombre : {valeur}")
Nettoyage avec finally
La clause finally s’exécute toujours, qu’une exception soit levée ou non :
try:
fichier = open("exemple.txt", "r")
# Opérations sur le fichier
except FileNotFoundError:
print("Le fichier n'existe pas")
finally:
fichier.close() # Cette ligne s'exécute dans tous les cas
Lever des exceptions avec raise
Vous pouvez lever vos propres exceptions avec raise :
def verifier_age(age):
if age < 0:
raise ValueError("L'âge ne peut pas être négatif")
if age > 120:
raise ValueError("L'âge semble trop élevé")
Création d’exceptions personnalisées
Créez vos propres classes d’exceptions pour des erreurs spécifiques à votre application :
class MonErreurPersonnalisee(Exception):
def __init__(self, message):
self.message = message
super().__init__(self.message)
def fonction_avec_erreur_personnalisee():
raise MonErreurPersonnalisee("Ceci est une erreur personnalisée")
Meilleures pratiques de gestion des exceptions
- Soyez spécifique : Attrapez les exceptions les plus spécifiques possibles plutôt que d’utiliser un except général.
- Ne pas ignorer les exceptions : Évitez d’utiliser
except:
pass
sans traitement approprié. - Logguez les exceptions : Utilisez le module
logging
pour enregistrer les exceptions. - Nettoyage des ressources : Utilisez
finally
ou le gestionnaire de contextewith
pour nettoyer les ressources. - Exceptions personnalisées : Créez des exceptions personnalisées pour les erreurs spécifiques à votre application.
- Réémission d’exceptions : Utilisez
raise
sans arguments dans un bloc except pour réémettre l’exception.
Lire Aussi :
Programmation orientée objet en Python : Concepts clés et exemples
Manipulation de fichiers avec Python : lecture, écriture et parsing