Android 下载文件时会引发哪些异常?
在我的应用程序中,我有一个下载参考数据更新的工具。用户可以在PreferenceActivity中修改基本url,然后我将实际文件名附加到基本url。当我尝试下载文件时,如果出现问题,可能会引发异常。我希望向用户提供最合适的错误消息,而不仅仅是发生错误。为此,我希望捕获单个异常并相应地格式化消息。那么,下载文件时会引发哪些异常?作为参考,以下是我的下载代码:Android 下载文件时会引发哪些异常?,android,exception,download,Android,Exception,Download,在我的应用程序中,我有一个下载参考数据更新的工具。用户可以在PreferenceActivity中修改基本url,然后我将实际文件名附加到基本url。当我尝试下载文件时,如果出现问题,可能会引发异常。我希望向用户提供最合适的错误消息,而不仅仅是发生错误。为此,我希望捕获单个异常并相应地格式化消息。那么,下载文件时会引发哪些异常?作为参考,以下是我的下载代码: int msgId; try { String url = props.getProperty(Constants.SETTING
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之类的内容不适用。由于连接超时或连接被拒绝HTTP 403,存在连接异常
//编辑:我刚刚读到,大多数应用程序不应该捕获ConnectException;捕获超类更为健壮
此外,您还可以测试是否存在活动的Internet连接:
private boolean checkCon() {
ConnectivityManager conMgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
if ( conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED
&& conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED) {
return false;
}
return true;
}
在我开始整个下载过程之前,我已经使用connectivity manager测试了是否存在连接,所以这已经包括在内了。我将添加SocketException,谢谢。