Attrapez toutes les exceptions et renvoyez également des erreurs personnalisées dans Jersey

Je veux attraper toutes les Exceptions inattendues dans un maillot de service rest.
Donc, j'ai écrit un ExceptionMapper:

@Provider
public class ExceptionMapper implements javax.ws.rs.ext.ExceptionMapper<Exception> {
    private static Logger logger = LogManager.getLogManager().getLogger(ExceptionMapper.class.getName());

    @Override
    public Response toResponse(Exception e) {
        logger.log(Level.SEVERE, e.getMessage(), e);

        return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("Internal error").type("text/plain").build();
    }
}

Le mappeur de captures vraiment toutes les exceptions. Donc je ne peux pas écrire:

public MyResult getById(@PathParam("id")) {
    if (checkAnyThing) {
        return new MyResult();
    }
    else {
        throw new WebApplicationException(Response.Status.NOT_FOUND);
    }
}

Ce est piégé par le Mappeur. Maintenant, je dois écrire:

public Response getById(@PathParam("id") {
    if (checkAnyThing) { {
        return Response.ok().entity(new MyResult()).build();
    }
    else {
        return Response.status(Response.Status.NOT_FOUND).build();
    }
}

Est-ce le bon moyen d'attraper toutes les exceptions inattendues et aussi retourner des erreurs (codes d'erreur) en jersey? Ou est-il un autre (plus correct)?

source d'informationauteur Dominic