首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从SOAPException抛出超时异常

从SOAPException抛出超时异常
EN

Stack Overflow用户
提问于 2018-02-21 14:59:10
回答 2查看 1.2K关注 0票数 1

我试图在下面的代码中抛出一个超时异常。我尝试了一个简单的条件,但这不是正确的方法。我的问题是如何区分超时异常和SOAPException?

代码语言:javascript
复制
URL endpoint = new URL(null,
    urlStr,
    new URLStreamHandler() {
      // The url is the parent of this stream handler, so must create clone
      protected URLConnection openConnection(URL url) throws IOException {
        URL cloneURL = new URL(url.toString());
        HttpURLConnection cloneURLConnection = (HttpURLConnection) cloneURL.openConnection();
        // TimeOut settings
        cloneURLConnection.setConnectTimeout(10000);
        cloneURLConnection.setReadTimeout(10000);
        return cloneURLConnection;
      }
    });

try {
  response = connection.call(request, endpoint);
} catch (SOAPException soapEx) {
  if(soapEx.getMessage().contains("Message send failed")) {
    throw new TimeoutExpirationException();
  } else {
    throw soapEx;
  }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-06 13:51:42

经过几个小时的测试,我找到了解决SOAPException超时相关异常的正确方法。因此,解决方案是接受异常的父原因字段,并检查它是否是SocketTimeoutException的实例。

代码语言:javascript
复制
try {
  response = connection.call(request, endpoint);
} catch (SOAPException soapEx) {
  if(soapEx.getCause().getCause() instanceof SocketTimeoutException) {
    throw new TimeoutExpirationException(); //custom exception
  } else {
    throw soapEx;
  }
}
票数 0
EN

Stack Overflow用户

发布于 2018-02-21 17:15:23

下面的行来自call方法的开放jdk源代码。在代码中,它们只使用Exception (也是使用链接)捕获?评论)。我不认为有其他方法,除非Oracle jdk对此有不同的处理方式。

您仍然可以尝试类似if(soapEx.getCause() instanceof SomeTimeoutException)的方法(不确定这是否有效)。

代码语言:javascript
复制
            try {
                SOAPMessage response = post(message, (URL)endPoint);
                return response;
            } catch (Exception ex) {
                // TBD -- chaining?
                throw new SOAPExceptionImpl(ex);
            } 

如果您想检查源代码HttpSoapConnection

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48909037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档