2.4 · Gestion des erreurs & exceptions

Niveau 2 · Structures de données & POO

2.4Gestion des erreurs & exceptions

Objectif : gérer try/except/finally et créer ses propres exceptions.
Temps estimé : 12 min

Un programme robuste ne plante pas au premier imprévu (fichier absent, saisie invalide, division par zéro). La gestion des exceptions avec try / except permet d'anticiper les erreurs et d'y réagir proprement, au lieu de laisser le programme s'arrêter brutalement avec une longue trace rouge.

Vous apprenez à capturer des erreurs ciblées, à utiliser finally (toujours exécuté) et à lever vos propres exceptions avec raise. C'est ce qui distingue un script fragile d'une application fiable, prête pour de vrais utilisateurs.

Vocabulaire de la section

Exception
Erreur survenant à l'exécution (ZeroDivisionError, ValueError, FileNotFoundError…) qui interrompt le programme si non gérée.
try / except
try contient le code risqué ; except attrape l'erreur et exécute un code de secours au lieu de planter.
finally
Bloc exécuté DANS TOUS LES CAS (erreur ou non) : idéal pour libérer une ressource (fermer un fichier).
raise
Lève volontairement une exception, pour signaler une situation anormale (ex. un âge négatif).
Traceback
La trace d'erreur affichée par Python : lue de bas en haut, elle indique le type d'erreur et la ligne fautive.
Vérifiez votre compréhension

Quelle est la façon moderne et recommandée de formater du texte ?

Gestion des erreurs & exceptions
Vidéo hébergée sur YouTube — ouvrir dans un nouvel onglet ↗
Tutos exceptions & gestion d'erreurs Python (recherche FR)
Cliquer pour voir les résultats à jour ↗

En pratique — Fiabiliser un programme avec try/except

  1. Demandez un nombre à l'utilisateur et convertissez-le : entourez la conversion d'un try/except ValueError pour redemander en cas de saisie non numérique.
  2. Gérez une division en attrapant ZeroDivisionError avec un message clair au lieu d'un plantage.
  3. Ouvrez un fichier inexistant dans un try/except FileNotFoundError ; ajoutez un finally qui affiche « opération terminée ».
  4. Écrivez une fonction qui lève (raise) une ValueError si on lui passe un âge négatif, et testez-la.
Vous anticipez les erreurs avec try/except/finally et levez vos propres exceptions : vos programmes deviennent robustes face à l'imprévu.

Points clés à retenir

  • try/except attrape les erreurs au lieu de laisser le programme planter.
  • Ciblez le type d'erreur (ValueError, FileNotFoundError…) plutôt qu'un except vide.
  • finally s'exécute toujours : parfait pour libérer une ressource.
  • raise lève une exception pour signaler une situation anormale.

Questions fréquentes

Faut-il attraper toutes les erreurs avec un except général ?

Non : un « except: » nu masque tout, y compris des bugs que vous devriez voir. Attrapez des exceptions ciblées (except ValueError) pour ne gérer que ce que vous anticipez, et laissez remonter le reste. C'est une règle d'or de la fiabilité.

Quelle différence entre une erreur de syntaxe et une exception ?

Une erreur de syntaxe (SyntaxError) empêche le programme de démarrer : le code est mal écrit. Une exception survient à l'exécution d'un code par ailleurs valide (fichier absent, division par zéro). Seules les exceptions se gèrent avec try/except.

Autres ressources

Testez-vous : quiz du niveau 25 questions pour valider vos acquis avant de passer au niveau suivant