我知道如何检查网络是打开还是关闭,但我不知道是否抓住这个异常也没关系。检查互联网连接或发现异常?
例如,在这段代码中,我试着做一个GET。如果有连接并且服务器正在运行,则该方法返回true
。如果没有连接(或服务器关闭,或其他),则会抛出异常并返回false
。那么,在这种简单的情况下,是否有必要在GET之前检查连接?
private boolean get(String uri) {
boolean success = false;
try {
HttpGet request = buildGet(uri);
HttpResponse response = new DefaultHttpClient().execute(request);
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
HttpEntity entity = response.getEntity();
if (entity != null) {
/* DO SOMETHING */
success = true;
}
}
} catch (Exception e) {
/* If we get here -> we can't do a GET request */
}
return success;
}
(此外,检查互联网连接,我们需要添加ACCESS_NETWORK_STATE
许可)
这是一个不好的方法。可能会抛出异常,这不仅仅是因为网络关闭,而是由于其他原因。例如,'buildGet'中的一些代码可能有一个bug并且抛出'NullPointerException'。这个例外会被你抓住,所以代码变得更难调试 –
你会从消费资源中拯救你的自我,试图连接到网络 –