我使用以下 Exceptionmapper 将我的 jaxrs rest api 中的 WebApplicationExceptions 映射到响应。
@Provider
public class ErrorHandler implements ExceptionMapper<WebApplicationException> {
@Override
public Response toResponse(WebApplicationException e) {
int status = e.getResponse().getStatus();
JsonObject errorResponse = Json.createObjectBuilder()
.add("status", status)
.add("message", e.getMessage())
.build();
return Response.status(status)
.entity(errorResponse)
.type(MediaType.APPLICATION_JSON)
.build();
}
}
这工作正常,它完全符合它应该做的事情,但是当我抛出自定义错误时,例如throw new NotFoundException("custom message");
堆栈跟踪显示在我的服务器日志中。谁能解释一下?或者有人知道解决方案吗?
TL;博士;
出于某种原因,当我从我的 jax-rs 代码中抛出 WebApplicationExceptions 时,我的 ExceptionMapper 会处理错误但仍会抛出它,因此它会显示在服务器日志中。
有什么解决办法吗?