java - REST资源异常拦截器

标签 java rest jakarta-ee interceptor

我正在尝试确定是否可以在 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/

相关文章:

java - android 使用 Facebook SDK 进行开发。 (无效的 key 哈希)

model-view-controller - 将 XML 集成到现有 View 中

java - 在 session 中存储数据,如何以及何时检测数据是否过时

java - 数字到单词的映射,令人惊叹的内存突发奇想?

java - 如何与自己的实体建立@OneToMany 关系?

java - 帧率与重力无关

Java 构造函数通过 super() 关键字调用会产生冲突结果

java - 有没有办法从 servlet 过滤器的 Java 代码中查询 "url-pattern"属性?

java - 创建 Restful URI 路径?

java - 简单的 Spring REST 测试抛出 HttpMediaTypeNotSupportedException