REST资源异常拦截器

时间:2012-09-19 20:28:26

标签: java rest java-ee interceptor

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

1 个答案:

答案 0 :(得分: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注释映射器,并使资源方法抛出YourFancyException

相关问题