6

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

4

4 回答 4

4

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

于 2010-05-25T17:05:08.797 回答
2

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

于 2010-05-25T17:06:05.407 回答
1

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

于 2017-08-22T13:04:10.043 回答
0

我也无缘无故地在 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;
}
于 2019-04-06T12:13:09.747 回答