Gestion des exceptions en Python : Guide complet
Les erreurs font partie intégrante du développement logiciel. Même le code le plus soigneusement écrit peut rencontrer des imprévus : fichier manquant, division par zéro, problèmes de connexion réseau, etc. Pour éviter l'arrêt brutal du programme dans ces situations, Python propose un mécanisme puissant de gestion des exceptions basé sur les constructions try-except-finally.
Comment fonctionne la structure try-except-finally en Python ?
La structure try-except-finally permet d'intercepter les exceptions qui surviennent pendant l'exécution du programme et d'y réagir de manière appropriée.
Syntaxe générale :
try:
# Code susceptible de lever une exception
except SomeException:
# Code de gestion de l'exception
finally:
# Code exécuté dans tous les cas
Explication du rôle des blocs :
try: Ce bloc contient le code principal où une exception peut potentiellement se produire.except: Il définit l'action à entreprendre si une exception est levée dans le bloctry. Vous pouvez spécifier un type d'exception précis (SomeException) à intercepter.finally: Le blocfinallys'exécute toujours, qu'une exception ait été générée ou non dans le bloctry. Il est généralement utilisé pour libérer des ressources, comme la fermeture de fichiers, de connexions réseau ou de bases de données.
Exemple d'utilisation de try-except-finally
try:
nombre = int(input("Entrez un nombre entier : "))
resultat = 10 / nombre
print(f"Résultat : {resultat}")
except ZeroDivisionError:
print("Erreur : Division par zéro interdite.")
except ValueError:
print("Erreur : Veuillez entrer un nombre entier valide.")
finally:
print("Fin du programme.")
Fonctionnement de ce code :
- Le programme demande à l'utilisateur de saisir un nombre entier.
- Si l'utilisateur entre
0, une exceptionZeroDivisionErrorest levée et le blocexceptcorrespondant est exécuté. - Si l'utilisateur entre une valeur non entière, une exception
ValueErrorest levée et le blocexceptcorrespondant est exécuté. - Le bloc
finallys'exécute dans tous les cas, affichant un message de fin de programme.
Pourquoi utiliser le bloc finally ?
Le bloc finally garantit l'exécution d'un code important, qu'une exception ait eu lieu ou non. Voici quelques cas d'usage courants :
-
Fermeture de fichiers :
fichier = open("donnees.txt", "r") try: contenu = fichier.read() # Traitement du contenu du fichier finally: fichier.close() # Fermeture garantie du fichier -
Libération de ressources : Libération de connexions réseau, de connexions à des bases de données et d'autres ressources qui doivent être fermées ou libérées après utilisation.
-
Finalisation de logs ou nettoyage de données temporaires : Le bloc
finallypeut être utilisé pour terminer l'écriture dans un fichier de log ou pour supprimer des fichiers temporaires créés pendant l'exécution du programme.
Gestion de plusieurs exceptions
Dans un même bloc try, plusieurs types d'exceptions peuvent survenir. Python offre plusieurs façons de gérer cette situation :
Utilisation de plusieurs blocs except
try:
nombre = int(input("Entrez un nombre : "))
resultat = 100 / nombre
print(resu