Java getByName()-如何详细说明原因?
与我想能够区分Java getByName()-如何详细说明原因?,java,networking,Java,Networking,与我想能够区分 名称服务回复,结果是否定的 及 名称服务未回复(未连接到DNS服务器或其他) 我相信两者在支持方面有很大的区别,即告诉某人在哪里寻找问题。这是争论问题与基础设施问题之间的区别 那么我如何区分这两者呢 正如我所看到的,这两种情况下,信息文本是相似的。有什么好主意吗 要澄清的代码片段: try { InetAddress addr = InetAddress.getByName(hostname); } catch (UnknownHostException ex)
- 名称服务回复,结果是否定的
- 名称服务未回复(未连接到DNS服务器或其他)
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");
}
}
具体来说:在示例中,
..
会是什么?作为扩展,您可以在try/catch中编写一个额外的函数来ping给定的IP地址以查看响应(如本文()中所定义)
通过这样做,您可以使用您的函数,然后准确地验证问题发生的原因。但是,如果可能的话,我可能会建议您提前进行测试(例如,在您尝试直接连接之前)。作为一个扩展,您可以在try/catch中编写一个额外的函数来ping给定的IP地址以查看响应(如本文()中所定义)
通过这样做,您可以使用您的函数,然后准确地验证问题发生的原因。但是,如果可能的话,我可能会建议提前测试(例如,在您尝试直接连接之前)。您可以使用该类从java.lang.Throwable类继承的方法(请参阅java api)或者生成自定义异常,您可以在其中检查两个条件,一个为负值和null。您可以使用该类从java.lang.Throwable类(请参阅java api)继承的方法,或者生成自定义异常,您可以在其中检查两个条件,一个为负值和null。我不确定是否理解。如何控制由引发的异常的性质和内容?那个类是标准JDK的一部分,不是我的。我不确定我是否理解。如何控制由引发的异常的性质和内容?该类是标准JDK的一部分,而不是我的。那真是个坏主意。Ping表示ICMP可能会被阻止,而TCP/UDP不会被阻止,即在我的场景中,此类测试将给出错误的结果。我感兴趣的是名称服务器是否应答,而不是名称查找中使用的端点。您的建议还要求我知道DNS服务器IP。Ping什么IP地址?IP地址就是他想要确定的。哎哟。那真是个坏主意。Ping表示ICMP可能会被阻止,而TCP/UDP不会被阻止,即在我的场景中,此类测试将给出错误的结果。我感兴趣的是名称服务器是否应答,而不是名称查找中使用的端点。您的建议还要求我知道DNS服务器IP。Ping什么IP地址?IP地址是他想要确定的。