使用InetAddress.getByName()我希望能够区分
和
我相信两者在支持方面存在巨大差异,即告诉某人在哪里寻找问题。它是论证问题与基础设施问题之间的区别。
那么如何区分这两者?
我认为在这两种情况下只有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");
}
}
具体一点:示例中.....
会是什么?
答案 0 :(得分:-1)
作为扩展,您可以始终在try / catch中编写一个额外的函数来ping给定的IP地址以查看响应(如此(java code to ping an IP address)发布中所定义)。
通过这样做,您可以使用您的功能,然后确切地确认问题发生的原因。但是,我可能会建议尽可能提前测试(例如在尝试直接连接之前)。
答案 1 :(得分:-1)
您可以使用此类从java.lang.Throwable类继承的方法(请参阅java api)或构建自定义异常,您可以在其中检查一个为负和null的两个条件。