PaliSkill
Python intermédiaire

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_stock lève une KeyError si le produit n'existe pas dans stock (déjà rencontrée au premier chapitre de ce module), ou une StockInsuffisantError personnalisée si la quantité demandée dépasse le stock disponible.
  • Les deux blocs except gèrent chaque erreur séparément, avec un message adapté.
  • else n'affiche le stock restant que si le retrait à réellement réussi, sans aucune erreur.
  • finally affiche 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