代码之家  ›  专栏  ›  技术社区  ›  el323

在爪哇进行远程调用时要处理哪些异常

  •  0
  • el323  · 技术社区  · 7 年前

    我正在我的应用程序中进行远程调用。我想处理不同的异常,并在不同的异常情况下执行不同的任务。

    我正在调查 MalformedURLException , UnknownHostException , ConnectionException SocketTimeoutException .

    我知道万一 格式错误的异常 我想放弃这个请求,而这个请求相当简单。

    catch (MalformedURLException e) {
        log.info("MalformedURLException while fetching log");
        log.info("Content Url is Invalid and is being Dropped");
        return keywords;
    }
    

    现在万一 互联网断开 我想在一小段时间后重试请求。这里我应该处理哪个异常?

    我很困惑 ConnectException 未知幻觉 .

    catch (UnknownHostException e) {
        log.info("UnknownHostException while fetching log");
        log.info("Internet disconnectivity Retrying Content Url");
        keywords.add(value);
        Thread.sleep(1000);
        return keywords;
    }
    

    接下来我要用 con.setConnectTimeout(20000); con.setReadTimeout(30000); 在我的代码中。所以我猜如果这个过期,我可以处理 SocketTimeoutException接口 ?

    catch (SocketTimeoutException e) {
        log.info("SocketTimeoutException while fetching log:");
        keywords = increaseRetryCount(keywords, result, retryCount, url);
        return keywords;
    }
    

    我是否正确地处理了问题并使用了正确的异常?如果我遗漏了什么,请告诉我。

    1 回复  |  直到 7 年前
        1
  •  1
  •   user9906968    7 年前

    ConnectException UnknownHostException 当没有连接时,两者都可能发生。 未知幻觉 当DNS缓存中没有条目时发生。 连接异常 当在DNS缓存中有一个条目,但主机不能到达。

    简单捕捉 IOException 然后重试(但不是永远,而是增加暂停并在一段时间后放弃)。

    唯一的特殊情况是一个无效的url或来自服务器的永久性错误(如无效身份验证,…)。