Java 如果使用try{}catch{}捕捉到错误,代码会继续执行吗

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(); }

我正在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);

        }

我的问题是,假设我执行
AsyncTask
,而
doInBackground
调用一个方法,将其包装在
try{}catch{}
中。现在,如果
函数_A()
中的
for循环
位于
i
=70,并且它抛出了一个由
try{}catch{}
捕获的空指针异常,for循环是否会继续执行,直到
i
的值达到99,或者它本身是否会停止,并调用
onPostExecute
,并且
AsyncTask
将结束。

理想情况下,您永远不应该捕获空指针异常,因为它是一个RunTimeException,您的代码不应该允许出现这种情况。这表明代码中有一个bug需要修复。如果您的代码逻辑在运行时无法从空指针异常中恢复,请不要尝试捕获它。

如果
函数\u A
抛出异常,并且其中没有try-catch子句,则异常将传播到调用方,即
doInBackground
。现在,你可以在这里做一些事情

  • 就像@ChiefTwoPencils所说的那样,编写防御代码,这样就不会抛出
    NullPointerException

  • 如果您确实想捕获它,但循环仍应继续,则将
    try catch
    放入循环中

  • 我建议,理想情况下,编写不抛出空指针的代码。在调用某些内容之前,请始终检查null。或者从Java8尝试
    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
        }
    
    }