ネットワーク障害に対する耐性を高めるために、一部のレガシー コードを拡張しようとしています。wslite を介して Web サービス (CallWebService) への呼び出しをラップする (レガシー) groovy コードがいくつかあります。時々、この呼び出しは 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) をキャッチし、呼び出しを再試行することです (おそらくグリッチであるため) 1 回か 2 回です。
追加しようとすると
catch (java.net.ConnectException ex)
とビルドすると、ビルドは失敗します
exception ConnectException is never thrown in body of corresponding try statement
適切な例外をキャッチして対応できるようにするにはどうすればよいですか?