我正在尝试扩展一些遗留代码以使其更能容忍网络中断。我有一些(遗留)groovy 代码,它通过 wslite 封装了对 web 服务(CallWebService)的调用。有时,此调用会引发 wslite.http.HTTPClientException 或 java.net.ConnectException 异常(这已通过添加
log.info("Exception " + ex.getClass().getName() + " throw");
到我的 log4j 日志记录中来确定)
调用这个 groovy 代码的代码在 java 中,如下所示:
public static String getDataFromWebService(String webServiceUrl, String referenceNumber) {
try {
ReturnedData returnedData = new CallWebService(webServiceUrl, referenceNumber);
return (String)returnedData.toXml();
}
catch (Exception ex) {
log.info("Exception caught: class of exception is " + ex.getClass().getName());
throw ex;
}
我想要做的是捕获抛出的异常(wslite.http.HTTPClientException 或 java.net.ConnectException)并重试调用(因为它可能是一个小故障)一次或两次。
当我尝试添加
catch (java.net.ConnectException ex)
并构建,构建失败
exception ConnectException is never thrown in body of corresponding try statement
我应该怎么做才能捕捉到适当的异常并做出反应?