Jersey Exception Mapper不处理Resource Constructor中的异常

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jersey Exception Mapper不处理Resource Constructor中的异常相关的知识,希望对你有一定的参考价值。

我的jersey-server有以下Exception Mapper:

@Provider
public class ExceptionResponseMapper implements ExceptionMapper<Throwable> {

    Logger logger = Logger.getLogger(ExceptionResponseMapper.class);

    @Override
    public Response toResponse(Throwable e) {
        log.error(e);
        Response response = Response.status(500)
                    .entity(e)
                    .build();

        return response;
    }
}

我使用config.register(ExceptionResponseMapper.class);手动注册此提供程序

除了构造函数中的异常之外,Exception Mapper对我的REST资源类中抛出的异常非常有效。

例如。

@Path("/MyResource")
public class MyResource {

    public MyResource() {
        throw new RuntimeException();
    }
}

不会调用Exception Mapper。我该如何处理这种例外情况?

答案

当您的资源由Spring或CDI创建时,Jersey Context尚未就绪,但我的猜测是(如果您使用的是DI框架)。

以上是关于Jersey Exception Mapper不处理Resource Constructor中的异常的主要内容,如果未能解决你的问题,请参考以下文章

严重: Servlet threw load() exception java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.Se

nested exception is com.sun.jersey.api.client.UniformInterfaceException: PUT

使用Grizzy+Jersey搭建一个RESTful框架()报错Exception in thread "main" java.lang.AbstractMethodError:

Elasticsearches mapper_parsing_exception

Jersey:如何注册省略某些子类的ExceptionMapper?

Jersey ExceptionMapper未被调用