Bonjour,

Je me pose une question concernant la gestion des exceptions entre la couche service et la couche ihm d'une appli.
Le but est d'afficher un message spécifique à l'utilisateur selon l'exception et pas seulement afficher un message d'erreur générique.
Le but est aussi de dissocier la couche service et ihm et pour cela la couche service se contente de créér et de lever les exceptions.
Ces exceptions seront "catchées" par la couche IHM et plus precisement en struts j'utilise :
soit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<exception key="error.ldap" type="org.springframework.ldap.NameAlreadyBoundException" path="page.requests.error"/>
dans la balise action ou global-exception du struts-config.xml
soit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<exception key="error.ldap" type="org.springframework.ldap.NameAlreadyBoundException" handler="portal.exception.PortalExceptionHandler" path="page.requests.error"/>
qui me permet de récupérer l'exception dans un handler.

Si je veux afficher un message tout simple du type :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
error.ldap = Une erreur est survenue dans le ldap
Ca marche bien et j'ai pas besoin forcément d'utiliser un handler
Par contre comment faire si mon message à afficher a besoin d'arguments ? par exemple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
error.ldap = Une erreur est survenue dans le ldap {0}
J'ai vu que par exemple je pourrais faire ca dans mon handler :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
ActionMessage error = new ActionMessage("error.ldap", "un argument qui est connu de la couche service");
Je pourrais alors créer une exception qui contiendrait les arguments dont a besoin le message.
Il y a alors 2 solutions :
- Soit je crée un handler par exception et l'exception contient les arguments spécifiques à afficher
--> le problème est qu'à chaque fois que j'ai une nouvelle exception il faut créer un nouvel handler, potentiellement il peut y avoir énormément de classes
- Soit je fais ca de manière générique et je passe à l'exception une liste d'arguments
--> le problème est que lorsque l'exception est créée dans la couche service, elle est couplée au message à afficher car il faut savoir ce que le message attend
comme arguments ...

Alors comment avez-vous géré les exceptions et les messages à afficher dans l'ihm qui ont besoin de paramètres remontés par le service sans que les 2 soient trop couplés?

Merci par avance,

Aurélie