ConsigneGè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.
try: # code à risqueexcept TypeErreur1: # gestion erreur 1except (TypeErreur2, TypeErreur3): # gestion erreurs 2 ou 3else: # exécuté UNIQUEMENT si pas d'erreur dans tryfinally: # exécuté TOUJOURS (erreur ou pas, return ou pas)Utilité de else
- séparer le code "normal" du code à risque- distinguer "pas d'erreur" d'un succès apparentUtilité de finally
- cleanup (fermer un fichier, une connexion DB)- exécution garantie même si return depuis trydef 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)def parse_int(s): try: return int(s) except (ValueError, TypeError): return 0print([parse_int(x) for x in ['42', 'abc', '7', None]])# → [42, 0, 7, 0]try: ...except ValueError as e: print('Logging:', e) raise # relance l'exception telle quelleraise ValueError('message personnalisé') # déclencher manuellement✅ 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 faireRè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.
Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →