在我的应用程序中,我可以下载参考数据更新。用户可以在PreferenceActivity
- 中修改基本 URL,然后将实际文件名附加到基本 URL。当我尝试下载文件时,如果出现问题,可能会引发异常。我想向用户展示最合适的错误消息,而不是简单地“发生错误”。为此,我想捕获单个异常并相应地格式化消息。那么,下载文件时会抛出哪些异常呢?作为参考,这是我的下载代码(简化):
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
不应该适用。