gpt4 book ai didi

jax-rs - Quarkus ExceptionMapper 不处理 WebApplicationException

转载 作者:行者123 更新时间:2023-12-04 13:40:28 33 4
gpt4 key购买 nike

我试图了解这是一个功能还是一个错误...... :-)

对于下面的 Controller 和异常映射器,对于将失败并返回 401 响应的其余客户端,我希望为这两种情况调用异常处理程序。但是,不会为 WebApplicationException 调用它。为什么会这样以及您打算如何为它们注册异常处理程序。这是使用 Quarkus 版本 0.21.2

@Path("/failable")
public class FailableResource {

@Inject
@RestClient
private SomeHttpClient httpClient;

@GET
@Path("fails")
@Produces(MediaType.TEXT_PLAIN)
public String fails() {
try {
return httpClient.someQuery();
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}

@GET
@Path("works")
@Produces(MediaType.TEXT_PLAIN)
public String works() {
try {
return httpClient.someQuery();
} catch (Exception e) {
e.printStackTrace();
throw new IllegalStateException("Not a WebApplicationException");
}
}
}

和 ExceptionMapper
@Provider
public class HandleMySillyError implements ExceptionMapper<Throwable> {

@Override
public Response toResponse(Throwable e) {
e.printStackTrace();
return Response.ok("Some handled response").build();
}
}

最佳答案

我发现在 quarkus:dev 模式下运行时没有调用异常映射器。这似乎是由 quarkus 的异常映射器引起的,该映射器仅用于 DEV 模式(参见 https://github.com/quarkusio/quarkus/issues/7883)。
我像普通的 Java 程序一样在本地启动了我的代码,导致我的异常处理程序按预期工作。此外,在 Openshift 上运行代码时,也会使用我的自定义异常映射器。
注意:我使用的是 quarkus 1.8.3 版

关于jax-rs - Quarkus ExceptionMapper 不处理 WebApplicationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57910496/

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