【发布时间】:2018-09-24 21:45:39
【问题描述】:
我在我的 Android 应用程序中使用 try{}catch{} 来捕获空指针异常。
这是我的代码
public class load extends AsyncTask<Void, Void, Void> {
@Override
public Void doInBackground(Void... voids) {
try {
Function_A();
}
catch (NullPointerException e ){
}
return null;
}
@Override
protected void onPostExecute(Void n) {
super.onPostExecute(n);
}
这是Function_A() 代码
public void Function_A()
{
for(int i=0;i<100;i++)
{
//Some code which might trigger Null Pointer exception some times
}
}
我的问题是假设我执行AsyncTask 并且doInBackground 调用一个将其包装在try{}catch{} 中的方法。现在如果Function_A() 中的for loop 在i = 70 并且它抛出一个被try{}catch{} 捕获的空指针异常,那么for 循环会继续执行直到i 的值达到99还是它自己会停在那里,onPostExecute 将被调用,AsyncTask 将结束。
【问题讨论】:
-
如果 function_A 抛出异常,则表示代码已退出函数调用并返回到 doInBackground 方法。所以,循环不会继续。
-
@AvinashAnand 感谢您的回复。您能否发布一个答案,以便我接受。只是为了重新澄清
Function_A将退出空指针异常,即使该函数是使用try{]catch{}调用的? -
防御性编码比捕获 NPE 更好。
-
@ChiefTwoPencils 谢谢。我相信你是非常正确的,但在我的情况下,如果捕捉到空指针异常不会有任何区别,因为这是为了显示通知但并不重要。我将很快提出另一个问题来尝试解决空指针异常,因为我在加载电话中所有文件的列表时遇到此错误。
标签: java android exception nullpointerexception try-catch