Java 使用ExceptionMapper记录客户端错误

Java 使用ExceptionMapper记录客户端错误,java,exception-handling,jax-rs,dropwizard,exceptionmapper,Java,Exception Handling,Jax Rs,Dropwizard,Exceptionmapper,我正在开发一个使用Dropwizard的应用程序,该应用程序实现了ExceptionMapper: 这个实现的问题是,尽管它捕获了4**和5**错误,但它只记录5**个错误 我需要实现ExceptionMapper,以便根本不使用LoggingExceptionMapper,并且我的CustomExceptionMapper记录客户端错误和服务器错误 我想知道我的应用程序如何知道它需要使用CustomExceptionMapper而不是Dropwizard类 另外,在if条件中添加CLIENT_

我正在开发一个使用Dropwizard的应用程序,该应用程序实现了ExceptionMapper:

这个实现的问题是,尽管它捕获了4**和5**错误,但它只记录5**个错误

我需要实现ExceptionMapper,以便根本不使用LoggingExceptionMapper,并且我的CustomExceptionMapper记录客户端错误和服务器错误

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

另外,在if条件中添加CLIENT_ERROR以注销所有错误是否足够

@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();
    }
或者有更好的方法吗?

关于例外情况:

选择异常映射提供程序映射异常时 实现必须使用泛型类型最接近的提供程序 异常的超类

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

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

将客户端错误添加到if条件中,以注销所有错误是否足够?

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

关于异常外观:

选择异常映射提供程序映射异常时 实现必须使用泛型类型最接近的提供程序 异常的超类

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

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

将客户端错误添加到if条件中,以注销所有错误是否足够?

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