Interceptez les échecs prévisibles avec try/except/else/finally et levez vos propres exceptions pour signaler les données invalides.
Ouvrir cette leçon dans KodokonUn programme réel échoue : fichier absent, saisie invalide, réseau coupé. Python signale ces situations avec des exceptions, qui interrompent l'exécution et remontent la pile d'appels jusqu'à ce qu'un try/except les intercepte. Le réflexe professionnel : capturez l'exception la plus précise possible, au plus près de l'endroit où vous savez quoi faire.
def parse_age(text):
try:
return int(text)
except ValueError:
return None
print(parse_age("34")) # 34
print(parse_age("trente")) # NoneLe bloc complet compte quatre branches. try contient le code risqué, except traite l'échec, else s'exécute uniquement si aucune exception n'a été levée, et finally s'exécute dans tous les cas - idéal pour libérer une ressource ou journaliser. L'intérêt d'else : garder le try minimal, pour voir d'un coup d'œil quelle ligne peut échouer.
values = ["10", "abc", "25"]
total = 0
for value in values:
try:
number = int(value)
except ValueError:
print(f"Ignore : {value}")
else:
total += number
finally:
print(f"Traite : {value}")
print(total) # 35Vos fonctions peuvent aussi lever leurs propres exceptions avec raise, dès qu'une donnée reçue est invalide : mieux vaut échouer immédiatement avec un message clair que produire un résultat faux. Définissez une classe dédiée héritant d'Exception : l'appelant pourra la capturer spécifiquement, sans intercepter les autres erreurs par accident.
class EmptyCartError(Exception):
pass
def checkout(items):
if not items:
raise EmptyCartError("Panier vide.")
return round(sum(items), 2)
try:
print(checkout([]))
except EmptyCartError as error:
print(f"Erreur : {error}")