我知道如何檢查網絡是打開還是關閉,但我不知道是否抓住這個異常也沒關係。檢查互聯網連接或發現異常?
例如,在這段代碼中,我試着做一個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'。這個例外會被你抓住,所以代碼變得更難調試 –
你會從消費資源中拯救你的自我,試圖連接到網絡 –