En bref
Une exception est l’alarme officielle qu’un programme déclenche quand une opération tourne mal — fichier introuvable, division par zéro, réseau muet — et la gestion des erreurs est l’art de prévoir ces alarmes pour y répondre proprement au lieu de s’écraser. C’est l’airbag du code : on ne conduit pas en espérant l’accident, mais on l’équipe — « essaie cette manœuvre (try) ; si telle alarme sonne, déclenche ce plan B (except/catch) ; et dans tous les cas, fais ceci en sortant (finally) ». Sans gestion, la moindre erreur remonte toute la pile et tue le programme avec un message brut ; avec elle, l’utilisateur voit « fichier introuvable, vérifiez le nom » et la vie continue. Trois idées structurent le concept : on ne protège que ce qui peut légitimement échouer, on attrape des alarmes précises (jamais « tout »), et une erreur qu’on ne peut pas traiter mérite d’être relancée, pas étouffée.
Jusqu’ici, tes programmes vivent dans un monde poli : les fichiers existent, les saisies sont des nombres, le réseau répond. Le monde réel est moins bien élevé — et la différence entre un script fragile et un programme digne de ce nom tient précisément là. Comprendre la gestion des erreurs et les exceptions — l’alarme, l’airbag, le plan B — est le concept qui fait passer ton code à l’âge adulte : ce guide le déroule en douceur, Python et JavaScript en parallèle, dans la lignée de notre guide complet pour apprendre à coder.
Les exceptions, expliquées avec les mains
Commence par le constat : certaines opérations peuvent légitimement échouer, sans que ton code soit fautif. Ouvrir un fichier que l’utilisateur a renommé, convertir en nombre la saisie « douze », interroger une API quand le wifi tousse : autant de gestes corrects qui, certains jours, ratent. Que fait le langage dans ce cas ? Il déclenche une exception — littéralement : une situation exceptionnelle — une alarme officielle, typée et documentée (FichierIntrouvable, ValeurInvalide, DivisionParZéro), qui interrompt le cours normal et remonte de fonction en fonction à la recherche d’un responsable. Personne pour la prendre ? Le programme s’écrase, message brut à l’écran — le fameux « crash » que tout utilisateur a connu.
La gestion des erreurs est la réponse civilisée : l’airbag. On ne conduit pas en espérant l’accident — mais on s’équipe pour que l’accident possible ne soit pas fatal. Le dispositif tient en trois temps que tous les langages partagent : essaie cette manœuvre (le bloc protégé) ; si telle alarme précise sonne, exécute ce plan B (afficher un message clair, proposer de réessayer, prendre une valeur par défaut) ; et dans tous les cas, accident ou pas, fais le geste de sortie (refermer le fichier, couper la connexion). Note la philosophie, elle est capitale : gérer une erreur n’est pas la cacher — c’est transformer un écrasement brutal en situation prévue, avec une réponse digne pour l’utilisateur et une information exploitable pour le développeur. L’erreur reste une information ; l’airbag évite juste qu’elle soit une catastrophe.
À quoi ça ressemble dans le code
En Python, le dispositif s’écrit try/except : try: ouvre le bloc protégé — la tentative d’ouverture du fichier, la conversion int(saisie) — puis except FileNotFoundError: attrape CETTE alarme-là et déroule le plan B (« Fichier introuvable, vérifie le nom »), except ValueError: en attrape une autre (« Ce n’est pas un nombre »), et l’optionnel finally: exécute le geste de sortie dans tous les cas. Lis l’ensemble comme une phrase : « essaie ceci ; si l’alarme fichier sonne, fais cela ; si l’alarme valeur sonne, fais ceci ; et quoi qu’il arrive, range ». Ton programme peut aussi déclencher ses propres alarmes — raise ValueError(« âge négatif impossible ») — le geste d’une fonction qui refuse proprement une entrée absurde plutôt que de calculer faux en silence ; tu le pratiqueras dès les bases du Python.
En JavaScript, mêmes idées, mots-clés voisins : try { … } catch (erreur) { … } finally { … } — et le déclenchement s’écrit throw. Une particularité de territoire : dans le monde web, les échecs viennent massivement des opérations réseau — le fetch vers une API qui échoue — et la gestion d’erreurs y épouse l’asynchrone (le try/catch autour d’un await est le motif que tu écriras cent fois) ; les bases du JavaScript posent le terrain. Partout ailleurs — Java et ses exceptions déclarées, PHP, C++ — tu retrouveras la même trinité essai/attrape/finalement : un concept, appris une fois, servi à vie. Et le message d’erreur lui-même mérite ta tendresse : il nomme l’alarme, la ligne, la cause — le lire en entier est le premier réflexe du débogage, pas le dernier recours.
Les pièges classiques (et comment les éviter)
Piège 1 : l’attrape-tout silencieux. Le except: nu (ou catch vide) qui avale TOUTES les alarmes sans rien dire — le programme « marche » en apparence et ment : les vraies erreurs, y compris tes fautes de frappe, disparaissent dans le trou noir. Le remède, règle d’or absolue : attraper des exceptions précises, et toujours faire quelque chose de l’alarme (message, journal, valeur de repli) — le silence est le pire des plans B. Piège 2 : l’airbag partout. Emmailloter chaque ligne de try/except « au cas où » noie le code et masque sa logique. Le remède : on ne protège que les frontières légitimes d’échec — fichiers, réseau, saisies, conversions — le reste du code a le droit d’être simple ; une erreur dans TA logique doit éclater en développement, pas être bercée.
Piège 3 : les exceptions comme aiguillage. Utiliser l’alarme pour piloter le déroulement normal (« j’essaie, et l’échec me sert de branche sinon ») transforme le mécanisme d’urgence en condition déguisée — illisible et coûteux. Le remède : ce qui se teste se teste (le if vérifie que la clé existe) ; l’exception reste pour l’imprévisible. Piège 4 : étouffer ce qu’on ne sait pas traiter. Attraper une alarme sans plan B réel « pour que ça ne plante pas » prive tout l’étage supérieur de l’information ; le remède : quand tu ne peux rien faire d’utile localement, laisse remonter — ou relance après avoir enrichi le contexte. L’airbag est en place : tes programmes savent désormais échouer avec dignité — l’utilisateur voit une phrase humaine, toi un diagnostic net. C’est l’une des signatures les plus sûres du code professionnel, et elle t’accompagnera de la moindre saisie utilisateur jusqu’aux API que tu créeras — où chaque réponse d’erreur bien formée est, exactement, un plan B servi au client.
Questions fréquentes
C’est quoi une exception en programmation ?
L’alarme officielle qu’un langage déclenche quand une opération échoue — fichier introuvable, conversion impossible, division par zéro : un objet typé qui interrompt le cours normal et remonte de fonction en fonction jusqu’à être attrapé. Non gérée, elle termine le programme avec un message brut : le crash.
À quoi servent try, except/catch et finally ?
C’est le dispositif de gestion en trois temps : try délimite le bloc à protéger (la manœuvre qui peut échouer), except en Python ou catch en JavaScript attrape une alarme précise et déroule le plan B, et finally exécute dans tous les cas le geste de sortie — refermer un fichier, couper une connexion.
Faut-il mettre des try/except partout dans son code ?
Non — uniquement aux frontières où l’échec est légitime : fichiers, réseau, saisies utilisateur, conversions. Protéger chaque ligne noie la logique et masque les vraies fautes, qui doivent éclater pendant le développement pour être corrigées. Un bon programme a peu d’airbags, mais aux bons endroits.
Pourquoi ne faut-il jamais attraper toutes les exceptions en silence ?
Parce qu’un except nu et muet avale aussi tes propres bugs : le programme semble fonctionner tout en cachant ses erreurs, rendant le diagnostic impossible. La règle : attraper des exceptions précises, toujours exploiter l’alarme (message, journal, repli) — et laisser remonter ce qu’on ne sait pas traiter.
Sources
- Python.org — la documentation officielle des exceptions
- MDN Web Docs — try…catch et la gestion des erreurs en JavaScript
Cet article a une vocation informative et pédagogique. Les plateformes, outils et formations éventuellement cités le sont à titre d’exemple ; compare plusieurs options avant de t’engager ou de payer.

