当wiFi被禁用时,ConnectException与IOException?

时间:2012-04-01 00:43:44

标签: android exception ioexception connectexception

我尝试在禁用wiFi时连接到IP地址(例如http://222.222.222.222:8080)和URL(例如http://www.website.com)。我注意到,如果我没有Wi-Fi并尝试连接到IP地址,则会出现ConnectException错误。另一方面,如果我没有wiFi并尝试连接到URL,则会出现IOException错误。为什么我在2个案例中收到不同的Exception,唯一的区别是我提供了第一个IP地址和另一个的URL?有人可以在这个上启发我吗?我要求澄清。

谢谢!

1 个答案:

答案 0 :(得分:2)

由于不同的步骤失败,您会遇到不同的错误。

当您尝试连接到IP地址的端口80时,它是一个失败的connect(2)系统调用。 connect(2)失败的原因有很多种;您需要检查来自异常的消息,以便向用户提供良好的错误消息。

当您尝试连接到文本地址的端口80时,这些库将首先使用getaddrinfo(3)尝试主机名解析为IP地址。基于具有网络访问权限,名称解析可能会失败也可能不会失败 - 例如,如果您尝试连接到localhost,通常不需要网络访问,因为名称服务查找可以完全在本地设备上处理。由于名称服务失败是因为您无法联系名称服务器,因此即使基础原因对于给定的一组测试是相同的,也应该给出不同的错误消息(和异常)。您可能由于各种原因无法联系域名服务器。同样,您需要检查来自异常的消息,以便向用户提供良好的错误消息。