Exercice 93 / 100

Gestion d'erreurs

Gère les exceptions avec try/except/finally

Gestion d'erreurs avancée : try / except / else / finally pour structurer la logique des cas normaux vs erreurs.

Forme complète

try: # code à risque except TypeErreur1: # gestion erreur 1 except (TypeErreur2, TypeErreur3): # gestion erreurs 2 ou 3 else: # exécuté UNIQUEMENT si pas d'erreur dans try finally: # exécuté TOUJOURS (erreur ou pas, return ou pas)
Les quatre blocs ne tournent pas dans les mêmes cas : except attend qu'une erreur sorte, else attend qu'il n'y en ait aucune, et finally tourne dans tous les cas, même après un return

Utilité de else

- séparer le code "normal" du code à risque - distinguer "pas d'erreur" d'un succès apparent

Utilité de finally

- cleanup (fermer un fichier, une connexion DB) - exécution garantie même si return depuis try

Exemple : division sécurisée

def safe_divide(a, b): try: result = a / b except ZeroDivisionError: print('Erreur: division par zéro') return None except TypeError: print('Erreur: types invalides') return None else: print(f'{a}/{b} = {result}') return result finally: print('Opération terminée')
safe_divide(10, 3) safe_divide(10, 0) safe_divide('a', 3)

Pattern : valeur par défaut en cas d'erreur

def parse_int(s): try: return int(s) except (ValueError, TypeError): return 0
print([parse_int(x) for x in ['42', 'abc', '7', None]]) # → [42, 0, 7, 0]

Relancer une exception

try: ... except ValueError as e: print('Logging:', e) raise # relance l'exception telle quelle
raise ValueError('message personnalisé') # déclencher manuellement

Bonnes pratiques

✅ attraper UNIQUEMENT les exceptions attendues ✅ message clair ✅ logger l'erreur (avec contexte) avant de l'avaler
❌ except: vide → masque tous les bugs ❌ except Exception: → trop large ❌ silencer une erreur sans rien faire

Règle eafp (Easier to Ask Forgiveness than Permission) : en Python, on tente l'action et on gère l'erreur, plutôt que de vérifier d'abord. Plus pythonique, et évite les race conditions.

exercise.py

Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →