如何从 cxf 的 WebClient 获取已检查的异常或如何处理异常

How to get checked exception from cxf's WebClient or how to handle Exceptions

我创建了一个小客户端 api 来连接到专有的类似休息的服务。我使用 org.apache.cxf.jaxrs.client.WebClient 进行连接。在这个客户端我调用 get()post().

问题是,如果服务不可用或速度变慢(我将超时设置为 10 秒),我只会得到 javax.ws.rs.ProcessingException 类型的 RuntimeException。但是我需要一个检查异常来处理各种连接问题,让 api 的用户对它们做出反应。如何做到这一点?

这是配置 WebClient 客户端的代码:

private void configureClient() {
    ClientConfiguration config = WebClient.getConfig(client);
    HTTPConduit http = (HTTPConduit) config.getConduit();
    HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
    httpClientPolicy.setConnectionTimeout(TIMEOUT);
    httpClientPolicy.setAllowChunking(false);
    http.setClient(httpClientPolicy);
}

您可以使用 javax.ws.rs.WebApplicationException, java.net.ConnectException 来捕获与连接相关的异常(虽然我不记得确切的异常 class)和 javax.ws.rs.client.ClientException 来捕获其他 JAXRS 异常,例如 400 415 等.