4 votes

Le service de restauration lève une exception : la meilleure façon de gérer cette situation.

J'ai un service de repos qui lèvera une exception et je veux savoir quelle sera la meilleure façon de gérer cela.

Ainsi, j'ai un service de repos qui peut lancer une exception définie par l'utilisateur et je l'attrape à l'intérieur du bloc catch et je lance à nouveau cette exception ! et j'utilise le cadre de repos pour l'attraper. De même pour les exceptions non définies par l'utilisateur. J'ai pensé que ce serait bien car j'ai un certain nombre de services de repos et toute la gestion du code d'exception définie par l'utilisateur sera au même endroit.

Je voudrais savoir si c'est la bonne façon de gérer les exceptions dans le service de repos ?

J'utilise le jersey.

// rest service 
@POST
public void doSomething() {

try {
// ... some piece of code that can throw user defined exception as well as runtime exception
} catch(UserDefinedException e) {
throws new UserDefinedException(e);
} catch(Exception e) {
throws new ServiceException(e);
} 

// Now I have a @Provider to catch this thrown exception 

@Provider
public class UserDefinedExceptionHandler implements
        ExceptionMapper {

    public Response toResponse(UserDefinedException exception) {
        ClientResponse clientResponse = new          ClientResponse();
        ResponseStatus status = new ResponseStatus();

        clientResponse = handleUserDefinedException(exception, status, clientResponse);

        return Response.ok(clientResponse).build();
    }

// similarly for the ServiceException

5voto

hamilton.lima Points 556

Le fait d'afficher l'erreur 500 sur le serveur ne donne pas beaucoup de détails sur l'erreur, une façon de gérer gracieusement les erreurs est d'envelopper les données de réponse dans une structure avec le statut et les données, si le statut est une erreur, afficher le message correct.

quelque chose comme ceci au format json :

{
    "status": "error",
    "data": {
        "message": "detailed error message"
    }
}

1voto

BGR Points 4330

La gestion des exceptions dans un service REST n'est pas très différente de la gestion des exceptions dans n'importe quel autre morceau de code.

La seule "convention" consiste à renvoyer un HTTP 400 si l'exception est déclenchée par l'envoi de données incorrectes par le client et un 500 lorsque votre service échoue de manière inattendue.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X