getByName() - 如何详细说明原因?

时间:2014-09-10 15:39:37

标签: java networking

使用InetAddress.getByName()我希望能够区分

  • 名称服务回复,结果为否定

  • 名称服务没有回复(没有连接到DNS服务器或其他什么)

我相信两者在支持方面存在巨大差异,即告诉某人在哪里寻找问题。它是论证问题与基础设施问题之间的区别。

那么如何区分这两者?

我认为在这两种情况下只有UnknownHostException并且消息文本类似。有什么好主意吗?

要澄清的代码段:

try {
    InetAddress addr = InetAddress.getByName(hostname);
} catch (UnknownHostException ex) {
    if ( ..... ) {
        System.out.println("Name server replied but did not know \"" + hostname + "\"");
    } else {
        System.out.println("Name server could not be contacted");
    }
}

具体一点:示例中.....会是什么?

2 个答案:

答案 0 :(得分:-1)

作为扩展,您可以始终在try / catch中编写一个额外的函数来ping给定的IP地址以查看响应(如此(java code to ping an IP address)发布中所定义)。

通过这样做,您可以使用您的功能,然后确切地确认问题发生的原因。但是,我可能会建议尽可能提前测试(例如在尝试直接连接之前)。

答案 1 :(得分:-1)

您可以使用此类从java.lang.Throwable类继承的方法(请参阅java api)或构建自定义异常,您可以在其中检查一个为负和null的两个条件。