我正在开发一个使用 Dropwizard 的应用程序,它具有 ExceptionMapper 的这种实现:https ://github.com/dropwizard/dropwizard/blob/master/dropwizard-jersey/src/main/java/io/dropwizard/jersey/errors /LoggingExceptionMapper.java
这个实现的问题是,即使它捕获了 4** 和 5** 错误,它也只记录了 5** 错误。
我需要实现 ExceptionMapper,以便根本不使用 LoggingExceptionMapper,并且我的 CustomExceptionMapper 同时记录 CLIENT_ERRORs 和 SERVER_ERRORs。
我想知道我的应用程序如何知道它需要使用 CustomExceptionMapper 而不是 Dropwizard 类?
将 CLIENT_ERROR 添加到 if 条件以注销所有错误是否就足够了?
@Override
public Response toResponse(E exception) {
// If we're dealing with a web exception, we can service certain types of request (like
// redirection or server errors) better and also propagate properties of the inner response.
if (exception instanceof WebApplicationException) {
final Response response = ((WebApplicationException) exception).getResponse();
Response.Status.Family family = response.getStatusInfo().getFamily();
if (family.equals(Response.Status.Family.REDIRECTION)) {
return response;
}
if (family.equals(Response.Status.Family.SERVER_ERROR) || family.equals(Response.Status.Family.CLIENT_ERROR) {
logException(exception);
}
return Response.fromResponse(response)
.type(MediaType.APPLICATION_JSON_TYPE)
.entity(new ErrorMessage(response.getStatus(), exception.getLocalizedMessage()))
.build();
}
还是有更好的方法来做到这一点?