我依次遇到了这两个例外,但情况略有不同,我不确定情境差异是什么。
从Javadocs,我知道UnknownHostException是DNS查找失败的时候:hostname => IP地址失败。
来自Javadocs,UnresolvedAddressException:
尝试在未解析的套接字地址上调用网络操作时抛出未经检查的异常。
在这种情况下,分辨率意味着什么?从主机名到IP的映射?
我现在关于区别的假设是,使用本地映射(如/etc/hosts
或DNS)和UAE(UnresolvedAddressException)将从主机名到IP的任何失败查找都会抛出UHE(UnknownHostException)当我们存储对网络名称的引用而不查找它转换为的IP然后尝试对其执行某些操作(例如通过HTTP连接)时会发生。
这听起来不错吗?奇怪的是,有时在网络问题中,这会在某些代码中互换发生,所以我不确定其中的区别。