我目前正在編寫一個簡單的方法來快速構建HttpURLConnection,並且在理解發生的異常時遇到了一些問題。目前,它看起來像這樣:如何處理由java.net.URL.openConnection()拋出的IOException?
public static HttpURLConnection buildConnection(String urlString) throws IOException{
try{
URL url = new URL(urlString);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setReadTimeout(10000 /* 10 seconds */);
connection.setConnectTimeout(10000 /* 10 seconds */);
return connection;
} catch (MalformedURLException e){
// Impossible - All network URLs are taken from String resources
Log.w(LOG_LABEL, "URL \"" + urlString + "\" was malformed");
e.printStackTrace();
return null;
} catch (ProtocolException e){
// Impossible - "GET" is a valid Request method
e.printStackTrace();
return null;
}
}
我趕上並記錄MalformedURLException的和的ProtocolException異常,因爲我知道這是不可能的,他們會發生。但是,我拋出了可以通過url.openConnection()拋出的IOException。這是什麼例外?什麼原因導致它,以及我的應用程序如何發生一個行爲?
謝謝大家了, 威廉
謝謝格拉德溫。這是一個很好的具體答案。我將通過首先重試來處理IOException,然後向用戶顯示一條通用的網絡錯誤消息。 – 2013-03-22 16:38:50