我有一个异常映射器如下

import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;

@Provider
public class NotFoundMapper implements ExceptionMapper<NotFoundException> {

    private final Logger log = LoggerFactory.getLogger(getClass());
    private final MapperResponseBuilder responseBuilder = new MapperResponseBuilder();

    @Override
    public Response toResponse(NotFoundException ex) {
        log.warn("NotFoundException : " + ex.getMessage(), ex);
        return responseBuilder.buildErrorResponse(ex.getMessage(), Status.BAD_REQUEST);
    }
}

因此,NotFoundException是RuntimeException。我想有3个异常(exception)对应器

具有更高优先级的
  • NotFoundException
  • 具有下一个优先级的
  • RuntimeException
  • 最终异常

  • 有什么办法可以优先考虑那些?

    最佳答案

    它已经以该优先级运行。最具体的一个是命中。

    JAX-RS spec



    如果我不能正确理解您的问题,而是希望所有三个映射器都被击中,那将不会发生。每个请求仅命中一个映射器。这是避免无限循环的安全机制。

    关于java - ExceptionMapper的执行顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33939418/

    10-11 05:01