繁体   English   中英

网络代码有时会抛出 UnknownHostException

[英]Networking code sometimes throws UnknownHostException

我正在尝试从服务器获取数据。 有时我的代码会由于UnknownHostException而失败。 这是为什么? 这个问题的原因是什么?

如果 DNS 服务器出现故障,则可能会发生这种情况。 除了使 DNS 服务器更强大或寻找另一个服务器之外,您还可以只使用完整的 IP 地址而不是主机名。 这样就不需要根据主机名查找 IP 地址。 但是,我宁愿解决 DNS 问题,更喜欢 DNS,因为 IP 地址可能会不时更改。

UnknownHostException表示指定的主机无法转换为 IP 地址。 这很可能是您的 DNS 服务器的问题。

如果 DNS 解析间歇性失败,请捕获异常并重试,直到获得名称解析。 你只能控制,你能控制的东西……如果你不能控制/修复 DNS 服务器,让你的应用程序足够强大以处理古怪的 DNS 服务器。

我也无缘无故地在 Java 中看到零星的 UnknownHostExceptions。 解决办法就是重试几次。 这是 DocumentBuilder.parse 的包装器,它执行此操作:

static Document DocumentBuilder_parse(DocumentBuilder b, String uri) throws SAXException, IOException {
  UnknownHostException lastException = null;
  for (int tries = 0; tries < 2; tries++) {
    try {
      return b.parse(uri);
    } catch (UnknownHostException e) {
      lastException = e;
      System.out.println("Retrying because of: " + e);
      continue;
    }
  }
  throw lastException;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM