1
在我的應用程序中,我有一個工具來下載參考數據更新。用戶可以在PreferenceActivity
中修改基本網址 - 然後將實際文件名追加到基本網址。當我嘗試下載文件時,如果出現錯誤,可能會拋出異常。我想向用戶展示最合適的錯誤消息,而不是簡單地「發生錯誤」。要做到這一點,我想要捕捉個別的異常和相應的格式信息。那麼,下載文件時會拋出什麼異常呢?對於參考,這是我下載的代碼(簡化):下載文件時可能會拋出什麼異常?
int msgId;
try {
String url = props.getProperty(Constants.SETTINGS_REFDATA_SOURCE);
if(!url.endsWith("/")) {
url += "/";
}
url += Constants.UPDATE_CUSTOMER_FILE;
CSVReader in = new CSVReader(new InputStreamReader(url.openStream()));
...//read and parse file here
}
catch(MalformedURLException e) {
msgId = R.string.error_invalid_base_url;
}
catch(UnknownHostException e) {
msgId = R.string.error_unknown_host;
}
catch(FileNotFoundException e) {
msgId = R.string.error_file_not_found;
}
catch(IOException e) {
msgId = R.string.error_reading_data;
}
catch(MyParseException e) {
msgId = R.string.error_invalid_file_format;
}
catch(Exception e) {
msgId = R.string.error_other_error;
}
finally {
try { in.close(); } catch(Exception e2) {}
}
// then I display AlertDialog using msgId as the message
正如你所看到的,我已經趕上幾個例外 - 一些,我知道可以扔掉,一些我在測試中遇到的。我還需要迎合哪些其他例外情況?請注意,下載的數據量非常小(最多15-20 Kb),因此OutOfMemoryError
等應不適用。
我已經測試是否有使用連接管理器的連接,我纔開始整個下載過程,所以這是覆蓋。我將添加SocketException,謝謝。 – 2013-02-11 13:00:59