bmo*_*ney 7 jax-rs microprofile quarkus
我试图了解这是一个功能还是一个错误...:-)
对于下面的控制器和异常映射器,对于将因 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");
}
}
}
Run Code Online (Sandbox Code Playgroud)
和异常映射器
@Provider
public class HandleMySillyError implements ExceptionMapper<Throwable> {
@Override
public Response toResponse(Throwable e) {
e.printStackTrace();
return Response.ok("Some handled response").build();
}
}
Run Code Online (Sandbox Code Playgroud)
小智 4
我发现在 quarkus:dev 模式下运行时,不会调用异常映射器。这似乎是由 quarkus 的异常映射器引起的,该映射器仅在 DEV 模式下使用(请参阅https://github.com/quarkusio/quarkus/issues/7883)。
我像正常的 java 程序一样在本地启动了我的代码,导致我的异常处理程序按预期工作。此外,在 Openshift 上运行代码时,也会使用我的自定义异常映射器。
注意:我使用的quarkus版本1.8.3
| 归档时间: |
|
| 查看次数: |
7732 次 |
| 最近记录: |