Java 使用ExceptionMapper记录客户端错误
我正在开发一个使用Dropwizard的应用程序,该应用程序实现了ExceptionMapper: 这个实现的问题是,尽管它捕获了4**和5**错误,但它只记录5**个错误 我需要实现ExceptionMapper,以便根本不使用LoggingExceptionMapper,并且我的CustomExceptionMapper记录客户端错误和服务器错误 我想知道我的应用程序如何知道它需要使用CustomExceptionMapper而不是Dropwizard类 另外,在if条件中添加CLIENT_ERROR以注销所有错误是否足够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_
@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系列具有所有错误响应