Gérer les erreurs en Python : Guide complet try, except, finally

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 erreurs en Python avec try, except, finally

La gestion des erreurs est une étape essentielle pour développer un logiciel fiable et de qualité. Même les développeurs les plus expérimentés ne sont pas à l'abri d'erreurs lors de l'exécution d'un programme. Pour éviter que ces situations ne provoquent un plantage complet de l'application, Python propose des outils puissants pour gérer les exceptions.

Ce guide vous explique comment utiliser correctement les blocs try, except et finally pour écrire un code robuste face aux erreurs.

Les bases de la gestion des exceptions en Python

Qu'est-ce que la gestion des erreurs ?

La gestion des erreurs en Python permet d'intercepter les exceptions qui surviennent pendant l'exécution d'un programme. Au lieu d'un arrêt brutal de l'application, le système exécute des actions spécifiques pour traiter correctement la situation problématique.

Les éléments clés du système de gestion des exceptions

Le système de gestion des erreurs en Python repose sur trois blocs principaux :

  • try — le bloc de code où une exception peut se produire
  • except — le bloc pour traiter un type d'erreur spécifique
  • finally — le bloc de code qui s'exécute quel que soit le résultat

Structure de base de la construction try-except-finally

Syntaxe de la construction principale

try:
    # Code pouvant déclencher une exception
    pass
except SpecificError:
    # Code pour gérer une erreur spécifique
    pass
finally:
    # Code exécuté dans tous les cas
    pass

Application pratique de la structure de base

try:
    user_input = input("Entrez un nombre : ")
    number = int(user_input)
    print(f"Vous avez saisi le nombre : {number}")
except ValueError:
    print("Erreur : veuillez entrer un nombre valide")
finally:
    print("Opération terminée")

Si la saisie est correcte, le programme affiche le nombre. En cas de saisie incorrecte, un message d'erreur s'affiche. Le bloc finally s'exécute dans tous les cas.

Gestion de différents types d'exceptions

Gestion multiple des erreurs

Python permet de gérer différents types d'exceptions avec plusieurs blocs except :

try:
    dividend = 10
    divisor = 0
    result = dividend / divisor
except ZeroDivisionError:
    print("La division par zéro n'est pas autorisée")
except ValueError:
    print("Format de données incorrect détecté")
except TypeError:
    print("Types de données incompatibles pour cette opération")
finally:
    print("Traitement de l'opération mathématique terminé")

Gestion des erreurs sans bloc finally

Le bloc finally n'est pas obligatoire. Sans lui, le programme gère l'exception et continue son exécution :

try:
    data_list = [1, 2, 3, 4, 5]
    element = data_list[10]  # Tentative d'accès à un index inexistant
except IndexError:
    print("Tentative d'accès à un index en dehors de la liste")

Obtenir des informations détaillées sur les exceptions

Utilisation du mot-clé as

Pour obtenir des informations détaillées sur une exception, utilisez la construction avec le mot-clé as :

try:
    calculation = 15 / 0
except ZeroDivisionError as error:
    print(f"Erreur détectée : {error}")
    print(f"Type d'erreur : {type(error).__name__}")

Résultat de l'exécution :

Erreur détectée : division by zero
Type d'erreur : ZeroDivisionError

Gestion universelle de toutes les exceptions

Dans certains cas, il est nécessaire d'intercepter toutes les exceptions possibles :

try:
    potentially_risky_operation()
except Exception as error:
    print(f"Une erreur s'est produite : {error}")
    print(f"Type d'erreur : {type(error).__name__}")

Cette approche est utile pour journaliser les erreurs ou afficher un message générique à l'utilisateur, mais il est recommandé de traiter les exceptions spécifiques lorsque c'est possible.

Bonnes pratiques pour la gestion des exceptions

Éviter les blocs except trop larges

Il est déconseillé d'utiliser un bloc except sans spécifier le type d'exception, car cela peut masquer des erreurs inattendues et rendre le débogage difficile.

Nettoyer les ressources avec finally

Le bloc finally est idéal pour libérer des ressources comme des fichiers ouverts ou des connexions réseau, garantissant leur fermeture même en cas d'erreur.

Journaliser les erreurs pour le débogage

Utilisez le module logging de Python pour enregistrer les exceptions avec leur trace complète, facilitant ainsi l'identification et la résolution des problèmes.

Blogs

Book Recommendations