2

我正在尝试确定是否可以在 REST 资源上设置类似解决方案的拦截器,这样如果抛出异常,我可以记录异常并更改返回的响应。我基本上不想用 try/catch 块包装我所有的 REST 资源。如果管理 REST 资源,我只会在所有调用中使用 @Interceptor,但由于它不受管理,这似乎是不可能的。

4

1 回答 1

2

您可以使用一个实现javax.ws.rs.ext.ExceptionMapper。假设您的代码可能会YourFancyException从资源中抛出一个。然后您可以使用以下映射器:

@Provider
public class YourFancyExceptionMapper 
                implements ExceptionMapper <YourFancyException> {
    @Override
    public Response toResponse(YourFancyException exception) {
        return Response.status(Response.Status.BAD_REQUEST)
                        .entity(exception.getMessage()).build();
    }
}

不要忘记使用注释映射器@Provider并使您的资源方法可以 throw YourFancyException

于 2012-09-19T20:51:25.420 回答