Dans cet article, nous allons explorer le concept de gestion des exceptions dans Python. Nous discuterons de la différence entre les erreurs de syntaxe et les exceptions, des différentes façons de lever, attraper et gérer les exceptions, et de l'utilisation des clauses assert, try, except, else et finally.

Erreurs de syntaxe et exceptions

Les erreurs de syntaxe se produisent lorsque l'analyseur syntaxique détecte une instruction incorrecte dans le code. Ces erreurs empêchent l'exécution du code. D'autre part, les exceptions sont des événements qui se produisent au cours de l'exécution du programme et qui peuvent conduire à l'arrêt brutal du programme s'ils ne sont pas gérés correctement (realpython.com).

Lever des exceptions

Vous pouvez lever une exception en Python en utilisant le mot-clé raise suivi du type d'exception et d'un message facultatif :

raise ValueError("This is a custom error message")

Déclaration d'affirmation (assert)

L'instruction assert vous permet de vérifier si une certaine condition est remplie et de soulever une exception si la condition ne l'est pas. La syntaxe de l'instruction assert est la suivante :

assert condition, "Error message"

Par exemple :

x = -1
assert x >= 0, "Only positive numbers are allowed"

Clauses Try, Except, Else et Finally

Pour gérer les exceptions en Python, vous pouvez utiliser les clauses try, except, else et finally :

  • try : Le bloc de code dans lequel vous vous attendez à ce qu'une exception se produise.
  • except : Le bloc de code qui gère l'exception si elle se produit dans le bloc try.
  • else : Le bloc de code qui s'exécute uniquement si aucune exception n'est rencontrée dans le bloc try.
  • finally : Le bloc de code qui s'exécute toujours, qu'une exception ait été rencontrée ou non.

Voici un exemple d'utilisation de ces clauses :

try:
    x = 1 / 0
except ZeroDivisionError:
    print("You cannot divide by zero")
else:
    print("Division successful")
finally:
    print("This will always run")

Gestion des exceptions multiples

Vous pouvez gérer plusieurs exceptions en spécifiant plusieurs blocs except, chacun gérant un type d'exception différent :

try:
    # Some code that may raise an exception
except ValueError:
    print("A ValueError occurred")
except ZeroDivisionError:
    print("A ZeroDivisionError occurred")

Il est également possible de gérer plusieurs exceptions dans un seul bloc except en fournissant un tuple de types d'exceptions :

try:
    # Some code that may raise an exception
except (ValueError, ZeroDivisionError):
    print("A ValueError or ZeroDivisionError occurred")

Conclusion

Ici nous avons exploré le concept de gestion des exceptions en Python, y compris la différence entre les erreurs de syntaxe et les exceptions, la façon de soulever, attraper et gérer les exceptions, et l'utilisation des clauses assert, try, except, else et finally. La compréhension de ces concepts vous aidera à créer des applications plus robustes et tolérantes aux erreurs, en vous assurant que votre code peut gérer avec élégance les situations inattendues qui peuvent survenir au cours de l'exécution.

Allez plus loin :