我试图扩展一些遗留代码,使其更容忍网络中断。我有一些(遗留)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