我有一个例外映射器,如下所示
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个异常映射器,它们映射
有没有办法优先考虑那些?
答案 0 :(得分:15)
它已经以该优先级运行。最具体的一击。
当选择异常映射提供程序来映射异常时,实现必须使用其泛型类型是异常的最近超类的提供程序。
如果我没有正确理解你的问题,而你希望所有三个地图制作者都被击中,那就不会发生。每个请求只有一个映射器。这是避免无限循环的安全机制。