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 l'attestation finale.

7 500 XOF / 11,43 € / 12,46 $

Débloquez les 92 leçons restantes de ce module

Pour vous communiquer où envoyer le paiement.

Moyen de paiement souhaité

Nous vous contactons pour le paiement — activé dès réception.