Python - Leverer des Exceptions
Bonjour à tous, aspirants Pythonistes ! Aujourd'hui, nous allons plonger dans le monde fascinant des exceptions en Python. Ne vous inquiétez pas si vous êtes nouveau dans la programmation – je vais vous guider à travers ce concept étape par étape, tout comme j'ai fait pour d'innombrables étudiants au fil des années. Alors, prenez un verre de votre boisson préférée, et partons ensemble dans cette aventure Python !
Lever des Exceptions en Python
Imaginons que vous cuisinez un délicieux repas, mais vous réalisez soudain que vous êtes en manque d'un ingrédient crucial. Que faites-vous ? Vous arrêteriez probablement de cuisiner et avertiriez tout le monde de ce problème, n'est-ce pas ? Eh bien, c'est exactement ce que signifie lever des exceptions en Python – c'est un moyen de signaler qu'un événement inattendu ou problématique s'est produit dans votre code.
Pourquoi Lever des Exceptions ?
Lever des exceptions nous permet de :
- Indiquer des erreurs ou des situations inhabituelles
- Contrôler le flux de notre programme
- Fournir un retour d'information significatif aux utilisateurs ou à d'autres parties de notre code
Commençons par un exemple simple :
def diviser(a, b):
if b == 0:
raise ValueError("Impossible de diviser par zéro !")
return a / b
try:
resultat = diviser(10, 0)
except ValueError as e:
print(f"Oups ! Une erreur s'est produite : {e}")
Dans cet exemple, nous leverons une ValueError
lorsque quelqu'un essaie de diviser par zéro. Analysons cela :
- Nous définissons une fonction
diviser(a, b)
qui vérifie sib
est zéro. - Si
b
est zéro, nous leverons uneValueError
avec un message personnalisé. - Nous utilisons un bloc
try-except
pour attraper l'exception et afficher un message amical.
Lorsque vous exécutez ce code, vous verrez :
Oups ! Une erreur s'est produite : Impossible de diviser par zéro !
Lever des Exceptions Intégrées
Python est fourni avec une variété d'exceptions intégrées que nous pouvons lever. Voici une table de某些 communes :
Exception | Description |
---|---|
ValueError | Levée lorsque une fonction reçoit un argument du bon type mais une valeur inappropriée |
TypeError | Levée lorsqu'une opération ou une fonction est appliquée à un objet d'un type inapproprié |
IndexError | Levée lorsque une sous-cription de séquence est hors limites |
KeyError | Levée lorsque'une clé de dictionnaire n'est pas trouvée |
FileNotFoundError | Levée lorsque un fichier ou répertoire est demandé mais n'existe pas |
Voyons quelques exemples :
def verifier_age(age):
if not isinstance(age, int):
raise TypeError("L'âge doit être un entier")
if age < 0:
raise ValueError("L'âge ne peut pas être négatif")
print(f"Votre âge est {age}")
try:
verifier_age("vingt")
except TypeError as e:
print(f"Erreur de type : {e}")
try:
verifier_age(-5)
except ValueError as e:
print(f"Erreur de valeur : {e}")
Lorsque vous exécutez ce code, vous verrez :
Erreur de type : L'âge doit être un entier
Erreur de valeur : L'âge ne peut pas être négatif
Lever des Exceptions Personnalisées
Parfois, les exceptions intégrées ne suffisent pas. C'est alors que nous créons nos propres exceptions personnalisées ! C'est comme être un chef et créer vos propres recettes uniques.
Créer des Exceptions Personnalisées
Pour créer une exception personnalisée, nous définissons simplement une nouvelle classe qui hérite de la classe Exception
:
class TropDePizzasError(Exception):
pass
def commander_pizza(nombre):
if nombre > 100:
raise TropDePizzasError("Whoa ! C'est trop de pizzas à gérer !")
print(f"Commande confirmée : {nombre} pizzas")
try:
commander_pizza(101)
except TropDePizzasError as e:
print(f"Commande échouée : {e}")
Dans cet exemple délicieux :
- Nous définissons une exception personnalisée
TropDePizzasError
. - Notre fonction
commander_pizza
lève cette exception si quelqu'un commande plus de 100 pizzas. - Nous attrapons l'exception et affichons un message amical.
Lorsque vous exécutez ce code, vous verrez :
Commande échouée : Whoa ! C'est trop de pizzas à gérer !
Rélever des Exceptions
Parfois, vous pourriez vouloir attraper une exception, faire quelque chose avec elle, puis la relancer pour qu'elle soit gérée par quelqu'un d'autre. C'est comme passer une patate chaude dans un jeu !
Voici comment vous pouvez le faire :
def operation_risquée():
print("Début de l'opération risquée...")
raise ValueError("Quelque chose s'est mal passé !")
def performer_operation():
try:
operation_risquée()
except ValueError:
print("Erreur capturée, enregistrement...")
raise # Rélever l'exception
try:
performer_operation()
except ValueError as e:
print(f"Opération échouée : {e}")
Dans cet exemple :
-
operation_risquée()
lève toujours uneValueError
. -
performer_operation()
capture l'exception, l'enregistre, puis la relève. - Nous capturons l'exception rélevée dans le bloc
try-except
externe.
Lorsque vous exécutez ce code, vous verrez :
Début de l'opération risquée...
Erreur capturée, enregistrement...
Opération échouée : Quelque chose s'est mal passé !
Et voilà, mes amis ! Nous avons couvert lever des exceptions, les exceptions intégrées, les exceptions personnalisées et même rélever des exceptions. Souvenez-vous, les exceptions ne sont pas vos ennemis – elles sont des outils précieux qui vous aident à écrire un code robuste et résistant aux erreurs.
Comme je le dis toujours à mes étudiants, programmer est comme apprendre à骑 à vélo. Vous pourriez tomber quelques fois, mais chaque chute (ou exception) vous enseigne quelque chose de nouveau. Continuez à pratiquer, restez curieux et n'ayez pas peur de lever quelques exceptions en cours de route !
Bon codage, et que vos exceptions soient toujours intentionnelles ! ?✨
Credits: Image by storyset