CodeGym/Cours/Python SELF FR/Lancement d’exception

Lancement d’exception

Disponible

6.1 Lancer des exceptions intentionnellement

En Python, tu peux lancer des exceptions intentionnellement en utilisant l'instruction raise. Cela te permet de signaler une erreur ou une situation incorrecte dans ton programme. Voyons les différentes façons d'utiliser l'instruction raise et le remballage des exceptions.

Lancer des exceptions standards

La syntaxe générale de cette opération est la suivante :

raise exception

Tu peux lancer des exceptions standards, comme Exception, TypeError et d’autres, en leur passant des messages appropriés.

Exemple : raise Exception

def check_number(value):
    if value < 0:
        raise Exception("Désolé, pas de nombres en dessous de zéro")

try:
    check_number(-5)
except Exception as e:
    print(f"Exception capturée : {e}")

Dans cet exemple, si la valeur est inférieure à zéro, une Exception est lancée avec le message "Désolé, pas de nombres en dessous de zéro".

Exemple : raise TypeError

def check_integer(value):
    if not isinstance(value, int):
        raise TypeError("Seuls les entiers sont autorisés")

try:
    check_integer("string")
except TypeError as e:
    print(f"Exception capturée : {e}")

Dans cet exemple, si la valeur n’est pas un entier, un TypeError est lancé avec le message "Seuls les entiers sont autorisés".

6.2 Remballage d’exception

Parfois, il est nécessaire de capturer une exception et d’en lancer une autre, fournissant des informations plus spécifiques ou utiles. Cela peut se faire à l'aide de l'instruction raise ... from, qui conserve l'exception d'origine comme cause pour la nouvelle.

La syntaxe générale de cette opération est la suivante :

raise nouvelle_exception from ancienne_exception

Exemple : Remballage d’exception

class EmptyVariableError(Exception):
    pass

def check_non_empty(value):
    if value == "":
        raise ValueError("La variable est vide")

try:
    check_non_empty("")
except ValueError as e:
    raise EmptyVariableError("Variable vide détectée") from e

Dans cet exemple, si la valeur de la variable est vide, tout d'abord un ValueError est lancé avec le message "La variable est vide". Cette exception est ensuite capturée, et une nouvelle exception EmptyVariableError est lancée avec le message "Variable vide détectée", tout en transmettant l'exception d'origine à l'aide de from.

6.3 Analyse des exceptions remballées

Utiliser l'instruction raise ... from permet de conserver des informations sur la chaîne d'exception, ce qui peut être utile pour le débogage. Tu peux analyser les exceptions remballées et leurs causes.

Exemple d’analyse des exceptions remballées :

class EmptyVariableError(Exception):
    pass

def check_non_empty(value):
    if value == "":
        raise ValueError("La variable est vide")

try:
    check_non_empty("")
except ValueError as e:
    raise EmptyVariableError("Variable vide détectée") from e

Lancer le code ci-dessus produira la sortie suivante :

Traceback (most recent call last): File "example.py", line 8, in

     check_non_empty("") File "example.py", line 5, in check_non_empty raise ValueError("La variable est vide") ValueError: La variable est vide


The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "example.py", line 10, in

     raise EmptyVariableError("Variable vide détectée") from e EmptyVariableError: Variable vide détectée

La première erreur (marquée en vert) est l'erreur d'origine qui s'est produite quelque part dans le code. Parfois, ces erreurs surviennent de temps en temps, et c'est un comportement normal du programme.

La deuxième erreur (marquée en bleu) est une erreur de plus haut niveau. Ton programme ou framework doit savoir comment la gérer. Mais si tu veux approfondir et comprendre les raisons de l'erreur, la première erreur (verte) est là pour t'aider.

Tout est très bien pensé.

2
Mission
Python SELF FR,  niveau 18leçon 0
Bloqué
Lancer une exception standard
Lancer une exception standard
2
Mission
Python SELF FR,  niveau 18leçon 0
Bloqué
Réemballage des exceptions
Réemballage des exceptions
Commentaires
  • Populaires
  • Nouveau
  • Anciennes
Tu dois être connecté(e) pour laisser un commentaire
Cette page ne comporte pas encore de commentaires