为了账号安全,请及时绑定邮箱和手机立即绑定

使用 ExceptionMapper 记录 CLIENT_ERRORs

使用 ExceptionMapper 记录 CLIENT_ERRORs

LEATH 2021-09-12 16:07:34
我正在开发一个使用 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 条件是否足以注销所有错误?@Overridepublic 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();    }或者有没有更好的方法来做到这一点?
查看完整描述

1 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

关于 ExceptionMapper 的JAX-RS 规范

选择异常映射提供程序以映射异常时,实现必须使用通用类型是异常的最近超级类的提供程序。

我的应用程序如何知道它需要使用 CustomExceptionMapper 而不是 Dropwizard 类?

您可以从应用程序中抛出自定义异常并为该特定异常创建一个 ExceptionMapper。

将 CLIENT_ERROR 添加到 if 条件是否足以注销所有错误?

是的,4xx 和 5xx 系列具有所有错误响应。


查看完整回答
反对 回复 2021-09-12
  • 1 回答
  • 0 关注
  • 183 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信