def verifier_montant(montant):
if montant <= 0:
raise ValueError("Le montant doit être supérieur à 0.")
print(f"Montant {montant} accepté.")
Les exceptions
Les exceptions en Python sont des événements qui surviennent lors de l’exécution d’un programme, souvent à cause d’une erreur. Contrairement aux erreurs non contrôlées qui interrompent brutalement le programme, les exceptions permettent de gérer ces situations de manière structurée et élégante. Elles offrent des outils pour anticiper, détecter et réagir à des problèmes imprévus.
- Amélioration de la lisibilité : Le code devient plus propre et lisible en séparant le traitement des erreurs de la logique principale.
- Gestion des erreurs : Évite les arrêts brutaux en permettant une capture et une gestion des erreurs localisées.
- Contrôle de flux : Permet de gérer des situations exceptionnelles sans perturber le reste du programme.
1 Lever une exception
Lever une exception consiste à signaler volontairement un problème lorsqu’une situation anormale est détectée.
Nous utiliserons comme fil rouge la gestion d’un système de retrait d’argent au distributeur.
Lorsqu’un utilisateur entre un montant à retirer, il est nécessaire de vérifier plusieurs critères (solde suffisant, montant valide, etc.) et de gérer les erreurs qui peuvent survenir.
Si l’utilisateur saisit un montant négatif ou nul, une exception ValueError
est levée, interrompant le programme pour signaler l’erreur.
2 Gérer une exception
Gérer une exception consiste à capturer une erreur grâce au bloc try-except
pour éviter que le programme ne se termine brutalement.
def retirer_argent(montant):
try:
verifier_montant(montant)print("Retrait en cours...")
except ValueError as e:
print(f"Erreur : {e}")
-50) retirer_argent(
Erreur : Le montant doit être supérieur à 0.
Le programme continue de fonctionner normalement même après une erreur, grâce à la gestion propre de l’exception.
3 Types d’exception
les types d’exceptions les plus courantes en Python :
ValueError
: Lorsque la valeur d’un argument est invalide.TypeError
: Quand une opération ou une fonction est appliquée à un type inapproprié.IndexError
: Tentative d’accéder à un indice inexistant dans une liste.KeyError
: Accès à une clé inexistante dans un dictionnaire.
try:
= [1, 2, 3]
liste print(liste[5])
except IndexError as e:
print(f"Erreur : {e}")
4 Exception personnalisée
Il est possible de créer ses propres exceptions pour des cas spécifiques à un programme.
Les exceptions personnalisées permettent de mieux identifier et gérer des erreurs spécifiques au contexte du programme.
4.1 Création de l’exception
Pour créer une exception personnalisée, il faut créer une classe qui hérite de la classe Exception
class SoldeInsuffisantError(Exception):
pass
4.2 Utilisation dans une fonction
L’exception que nous venons de créer peut être levée dans la fonction ci-dessous
def verifier_solde(solde, montant):
"""Vérifie que le montant du retrait demandé est inférieur au solde"""
if montant > solde:
raise SoldeInsuffisantError("Solde insuffisant pour ce retrait.")
print("Retrait autorisé.")
4.3 Gestion de l’exception
La fonction verifier_solde()
peut lever une exception.
Utilisons un bloc try-except pour gérer le cas où nous rencontrions cette exception sans faire planter notre programme.
try:
100, 200)
verifier_solde(except SoldeInsuffisantError as e:
print(f"Erreur : {e}")
Erreur : Solde insuffisant pour ce retrait.