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