如何知道UnknownHostException的原因?

Arc*_*rci 5 java android exception unknown-host

UnknownHostException如果服务器关闭或没有互联网连接,则会抛出异常。我如何确定抛出的错误是否是UnknownHostException因为服务器关闭或没有互联网连接?

这样做的原因是我需要通知用户错误的原因。我必须显示类似“抱歉。该服务当前不可用。请稍后重试”或“您没有互联网连接”的内容。

Séb*_*ien 4

您可以检查网络状态以确定互联网连接是否可用(但不是 100% 可靠):

ConnectivityManager conMgr =  (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);

if ( conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED 
    ||  conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING  ) {
...
}
Run Code Online (Sandbox Code Playgroud)

编辑 :

恕我直言,没有办法确定手机互联网连接是否已关闭。但是,除了检查网络状态之外,您还可以进行简单的测试,例如从互联网上的网站下载一个小页面(选择一些可靠的服务器)。

这种双重测试的结果应该在 99% 的情况下都是准确的。