Traitement d'Exception

Que soit béni l'inventeur de cette technique qui permet d'arriver à une démo sans être mort de trouille.

Python Exception File Not Found

La réalité est simple mais dure:

  • Dans toute application, même testée de manière satisfaisante, une erreur peut se produire à tout moment.
  • La méthode (sous-programme) qui constate une erreur ne sait en général pas comment réagir et ne peut pas corriger le problème.

On peut raisonnablement viser les objectifs suivants:

  • Toujours fournir une information sur ce qui s'est passé et dans quelles conditions.
  • Si possible remettre l'application dans un état stable et continuer l'exécution.

Le traitement d'erreur traditionnel offre quatre manières de réagir :

  • Terminer le programme brutalement (Core Dump, Blue Screen of the Death) : efficace, mais très désagréable pour l'utilisateur.
  • Rendre une valeur particulière représentant l'erreur : solution simple pour la fonction appelée, mais complique l'écriture des fonctions appelantes.
  • Ignorer l'erreur : la plus utilisée et également la moins bonne solution. Elle est en général complémentaire de la solution précédente (côté appelant)
  • Appeler une fonction spécifique de traitement des erreurs qui se retrouve obligée d'adopter une des solutions précédentes

Le mécanisme d'exception:

  • Est implémenté dans de nombreux langages (C++, Ada, Eiffel, Java, Python, VB.NET).
  • Il s'agit d'une manière complètement différente de traiter les erreurs.
  • Une fonction qui désire traiter des erreurs spécifie un bloc de code spécial : le traitement d'exception.
  • Un sous-programme qui détecte une erreur va déclencher une exception.
  • Le traitement séquentiel est interrompu.
  • L'exécution reprend dans le sous-programme appelant le plus proche en remontant la pile des appels, qui a déclaré traiter ce type d'exception.

La fonction qui traite l'exception dispose des informations suivantes:

  • Type de l'exception
  • Données de l'exception déclenchée.
  • Pile des appels (Stack Frame) ayant conduit au déclenchement de l'exception.