我正在尝试确定是否可以在 REST 资源上设置类似拦截器的解决方案,以便在引发异常时我可以记录异常并更改返回的响应。我基本上不想用 try/catch block 包装所有 REST 资源。如果 REST 资源受到管理,我只会在所有调用中使用 @Interceptor,但由于它不受管理,这似乎是不可能的。
最佳答案
您可以使用实现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
。
关于java - REST资源异常拦截器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12502372/