Leçon 9 / 9 — Chapitre 5: Gestion des erreurs
Cas pratique : un petit programme robuste
Cette dernière leçon combine plusieurs blocs except, else, finally et une exception personnalisée, sur un petit programme de retrait de stock.
class StockInsuffisantError(Exception):
pass
def retirer_stock(stock, produit, quantite):
if produit not in stock:
raise KeyError(produit)
if quantite > stock[produit]:
raise StockInsuffisantError(f"Stock insuffisant pour {produit}")
stock[produit] = stock[produit] - quantite
return stock[produit]
stock = {"riz": 20, "huile": 5}
try:
restant = retirer_stock(stock, "huile", 8)
except KeyError as e:
print("Produit inconnu :", e)
except StockInsuffisantError as e:
print("Erreur :", e)
else:
print("Stock restant :", restant)
finally:
print("Operation terminee")
Ce que fait chaque partie :
retirer_stocklève uneKeyErrorsi le produit n'existe pas dansstock(déjà rencontrée au premier chapitre de ce module), ou uneStockInsuffisantErrorpersonnalisée si la quantité demandée dépasse le stock disponible.- Les deux blocs
exceptgèrent chaque erreur séparément, avec un message adapté. elsen'affiche le stock restant que si le retrait à réellement réussi, sans aucune erreur.finallyaffiche un message de fin dans tous les cas, succès ou échec.
Avec cet appel (retirer 8 unités d'huile alors qu'il n'en reste que 5), le programme affiche Erreur : Stock insuffisant pour huile puis Operation terminee — le bloc else ne s'exécute pas, puisqu'une erreur est survenue.
À vous de jouer : appelez retirer_stock avec une quantité valide cette fois, et vérifiez que le bloc else s'exécute bien à la place du message d'erreur.
Continuez ce module
Débloquez les leçons restantes ainsi que la certification finale.
2 500 XOF / 3,81 € / 4,15 $
Débloquez les 85 leçons restantes de ce module
Votre paiement est vérifié avant l'activation de l'accès