CodeGym /Cours /Python SELF FR /Gestion des exceptions

Gestion des exceptions

Python SELF FR
Niveau 17 , Leçon 2
Disponible

3.1 Capture des exceptions

On n'en parlerait pas tant des exceptions si on devait juste les observer. Les exceptions sont des objets spéciaux avec lesquels ton programme en Python peut travailler. La gestion des exceptions est un aspect important de la programmation qui permet d'améliorer la fiabilité et la résilience des programmes.

En Python, pour capturer et gérer les exceptions, on utilise les constructions try, except, else et finally. Ces constructions permettent d'intercepter les erreurs survenant pendant l'exécution du programme et de prendre les mesures adéquates.

La construction try-except

La construction try-except est utilisée pour capturer et gérer les exceptions. Le bloc try contient du code qui peut déclencher une exception, et le bloc except contient du code qui sera exécuté en cas d'exception.

Exemple :


try:
    result = 10 / 0
except ZeroDivisionError:
    print("Erreur : division par zéro.")

Si dans le code du bloc try une exception ZeroDivisionError se produit, elle sera capturée par le bloc except et le code avec l'appel print() sera exécuté.

Gestion de plusieurs exceptions

Tu peux gérer plusieurs types d'exceptions en les spécifiant dans des blocs except séparés.


try:
    result = int("abc")
except ZeroDivisionError:
    print("Erreur : division par zéro.")
except ValueError:
    print("Erreur : valeur incorrecte.")

Capture de toutes les exceptions

Si tu veux capturer toutes les exceptions, tu peux utiliser un bloc except sans spécifier de type d'exception. Cependant, ce n'est pas recommandé, car cela peut rendre le débogage difficile et masquer des erreurs importantes.


try:
    result = 10 / 0
except:
    print("Une erreur est survenue.")

3.2 Les opérateurs else et finally

En plus des opérateurs try et except, il y en a deux autres optionnels : else et finally. Laisse-moi t'en parler un peu plus en détail.

La construction try-except-else

Le bloc else est utilisé pour exécuter du code si aucun exception n'a été levée dans le bloc try.


try:
    result = 10 / 2
except ZeroDivisionError:
    print("Erreur : division par zéro.")
else:
    print(f"Résultat : {result}")

La construction try-except-finally

Le bloc finally contient du code qui sera exécuté qu'une exception ait été levée ou non. C'est utile pour libérer des ressources ou effectuer des opérations de fermeture.


try:
    result = 10 / 0
except ZeroDivisionError:
    print("Erreur : division par zéro.")
finally:
    print("Ce bloc s'exécute toujours.")

Exemple complet : try-except-else-finally

Exemple :


try:
    result = 10 / 2
except ZeroDivisionError:
    print("Erreur : division par zéro.")
else:
    print(f"Résultat : {result}")
finally:
    print("Ce bloc s'exécute toujours.")

3.3 Exemple try-except-else-finally

Voyons un grand exemple réel. Par exemple, on essaie de lire des données à partir d'un fichier sur le disque — quoi de plus simple ?


file = open("file.txt", "r")
content = file.read()
print(content)

Qu'est-ce qui pourrait mal tourner ? Par exemple, tout :

  • Le fichier pourrait être absent. Il pourrait avoir été supprimé par accident, non enregistré, ou ton programme pourrait se trouver sur un autre ordinateur où il n'a jamais été.
  • Erreur de lecture du fichier. Ton programme n'y a pas accès car il se trouve dans un répertoire nécessitant des droits d'administrateur.
  • Un autre programme écrit actuellement dans ce fichier et il ne peut pas être lu — il a un accès exclusif au fichier.

Pas assez ? N'oublie pas que peu importe à quel moment une erreur survient lors du travail avec un fichier, tu dois absolument le « fermer » pour que le système d'exploitation libère les ressources allouées pour travailler avec ce fichier.

Alors le code réel ressemblera à peu près à ça :


try:
    file = open("non_existent_file.txt", "r")
    content = file.read()
except FileNotFoundError:
    print("Erreur : fichier non trouvé.")
except IOError:
    print("Erreur : erreur d'entrée-sortie.")
else:
    print(content)
finally:
    if 'file' in locals() and not file.closed:
        file.close()
        print("Fichier fermé.")

Bienvenue dans le monde réel, où tu dois écrire du code non seulement pour le "scénario de travail", mais aussi pour tous les scénarios possibles qui pourraient mal tourner.

Bon, je ne vais pas te faire peur — c'est plus simple que ça en a l'air. Il suffit de comprendre ce que sont les conditions de bord (corner cases) et d'ajouter à temps la vérification des erreurs standard. Le reste, les frameworks modernes le feront pour toi.

2
Mission
Python SELF FR, niveau 17, leçon 2
Bloqué
Gestion des exceptions.
Gestion des exceptions.
2
Mission
Python SELF FR, niveau 17, leçon 2
Bloqué
Conversion de données.
Conversion de données.
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION