Java 如果使用try{}catch{}捕捉到错误,代码会继续执行吗
我正在Android应用程序中使用Java 如果使用try{}catch{}捕捉到错误,代码会继续执行吗,java,android,exception,nullpointerexception,try-catch,Java,Android,Exception,Nullpointerexception,Try Catch,我正在Android应用程序中使用try{}catch{}捕获空指针异常 这是我的密码 public class load extends AsyncTask<Void, Void, Void> { @Override public Void doInBackground(Void... voids) { try { Function_A(); }
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);
}
我的问题是,假设我执行
AsyncTask
,而doInBackground
调用一个方法,将其包装在try{}catch{}
中。现在,如果函数_A()
中的for循环
位于i
=70,并且它抛出了一个由try{}catch{}
捕获的空指针异常,for循环是否会继续执行,直到i
的值达到99,或者它本身是否会停止,并调用onPostExecute
,并且AsyncTask
将结束。理想情况下,您永远不应该捕获空指针异常,因为它是一个RunTimeException,您的代码不应该允许出现这种情况。这表明代码中有一个bug需要修复。如果您的代码逻辑在运行时无法从空指针异常中恢复,请不要尝试捕获它。如果函数\u A
抛出异常,并且其中没有try-catch子句,则异常将传播到调用方,即doInBackground
。现在,你可以在这里做一些事情
NullPointerException
try catch
放入循环中Optional
,包装您认为可能为空的对象。这里是指向JavaDoc的链接-
如果函数A抛出异常,则表示代码已退出函数调用,并返回到doInBackground方法。所以,循环不会继续了。@Avinashana感谢您的回复。你能给我一个答复吗?这样我就可以接受了。只需重新验证
函数,即使使用try{]catch{}调用函数,函数将在空指针异常时退出
?编写防御代码比捕获NPE更好。@Chieftwo Pencils谢谢。我相信你是非常正确的,但在我的情况下,捕获空指针异常不会有任何区别,因为这是为了显示通知,但并不重要。我将很快提出另一个问题,试图解决空指针异常当我在加载手机中所有文件的列表时出现此错误。谢谢。我相信你是非常正确的,但在我的情况下,捕获空指针异常不会有任何区别,因为这是为了显示通知,但并不重要。我将很快提出另一个问题,尝试解决该空指针异常当我加载手机中所有文件的列表时出现此错误。
public void Function_A()
{
for(int i=0;i<100;i++)
{
//Some code which might trigger Null Pointer exception some times
}
}