gpt4 book ai didi

java - 使用 ExceptionMapper 记录 CLIENT_ERROR

转载 作者:行者123 更新时间:2023-12-02 01:56:07 25 4
gpt4 key购买 nike

我正在开发一个使用 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_ERROR 和 SERVER_ERROR。

我想知道我的应用程序如何知道它需要使用 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();
}

或者有更好的方法吗?

最佳答案

JAX-RS spec关于异常映射器:

When choosing an exception mapping provider to map an exception, an implementation MUST use the provider whose generic type is the nearest superclass of the exception.

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

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

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

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

关于java - 使用 ExceptionMapper 记录 CLIENT_ERROR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52260450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com