我試圖擴展一些遺留代碼,使其更容忍網絡中斷。我有一些(遺留)groovy代碼,它通過wslite打包調用web服務(CallWebService)。有時候,這種調用拋出無論是wslite.http.HTTPClientException或java.net.ConnectException例外如何在java中捕捉異常拋出的異常?
調用該Groovy代碼的代碼(這已被添加 log.info("Exception " + ex.getClass().getName() + " throw");
我log4j的日誌記錄來確定)是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
我應該怎麼做才能夠捕捉和反應的適當的例外?
編譯器錯誤告訴你ConnectException是一個檢查異常,它不被catch塊內的任何內容聲明。你確定你有正確的例外嗎? – jtahlborn 2013-02-11 15:29:55
當然?不,但我得到我的log4j代碼來執行以下操作:log.info(「Exception」+ ex.getClass()。getName()+「throw」);它似乎給我java.net.ConnectException作爲例外 – Jane 2013-02-11 15:31:21
的名稱是「頂級」異常,還是嵌套在另一個異常(例如HTTPClientException)? – jtahlborn 2013-02-11 15:39:34