Gestion des erreurs Python : try-except-finally et bonnes pratiques

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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 bloc try. Vous pouvez spécifier un type d'exception précis (SomeException) à intercepter.
  • finally : Le bloc finally s'exécute toujours, qu'une exception ait été générée ou non dans le bloc try. 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 :

  1. Le programme demande à l'utilisateur de saisir un nombre entier.
  2. Si l'utilisateur entre 0, une exception ZeroDivisionError est levée et le bloc except correspondant est exécuté.
  3. Si l'utilisateur entre une valeur non entière, une exception ValueError est levée et le bloc except correspondant est exécuté.
  4. Le bloc finally s'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 finally peut ê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                

Blogs

Book Recommendations