为什么我的应用程序崩溃了?它在fis.close();
行崩溃了。
这是doInBackground
的{{1}}方法。
AsyncTask
-
String collected = null;
FileInputStream fis = null;
try {
fis = openFileInput(FILENAME);
byte[] dataArray = new byte[fis.available()];
while (fis.read(dataArray) != -1) {
collected = new String(dataArray);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
fis.close();
return collected;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;
}
答案 0 :(得分:1)
很可能openFileInput(FILENAME);
正在抛出异常。
这意味着您正在尝试关闭null
流。
在关闭null
之前检查InputStream
。
答案 1 :(得分:1)
openFileInput
是否有机会返回null
?在这种情况下,NullPointerException
会在第byte[] dataArray = new byte[fis.available()];
行被静默吞下。
执行将跳转到finally
块,其中将抛出异常,因为它没有在任何catch
块中处理。