J'ai regardé le code source du framework web "play framework", et j'y ai découvert une utilisation détournée des exceptions, que je trouve plutot élégante mais peu conventionnelle.
Les requêtes http sont traitées dans la méthode invoke de la classe ActionInvoker.
De nombreuses Classes (RenderJSON, RenderStatic, RenderXml..) héritent d'une même classe exception "Result" et surchargent une méthode "apply".
Le traitement de la requête se fait alors de cette façon:
l'ActionInvoker effectue des traitements, et appelle des méthodes qui aboutissent à la levée d'une exception fille de la classe "Result" ( par exemple RenderJson) .
L'exception est alors catchée et la méthode "apply" de l'exception est appellée (dans notre exemple, la méthode apply de la classe RenderJson).
C'est la première fois que je vois ce genre d'utilisation des Exceptions, trouvez vous ça élégant, est-ce déconseillé, pourquoi ?
Partager