gpt4 book ai didi

java - 如果使用 try{}catch{} 捕获错误,代码是否会继续执行

转载 作者:行者123 更新时间:2023-11-29 18:56:18 27 4
gpt4 key购买 nike

我在我的 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 循环 位于 i = 70 并且它抛出一个空指针异常,该异常被 捕获try{}catch{},for 循环会继续执行直到 i 的值达到 99 还是会自行停止,onPostExecute 将被调用,AsyncTask 将结束。

最佳答案

如果 Function_A 抛出异常并且其中没有 try catch 子句,异常将传播给调用者,即 doInBackground。现在,您可以在这里做一些事情。

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

  2. 如果您真的想捕获它并且循环仍应继续,则将 try-catch 放入循环中。

理想情况下,我建议编写不抛出空指针的代码。在调用它之前总是检查 null 。或者尝试使用 Java 8 中的 Optional 来包装您认为可能为 null 的对象。这是指向 JavaDoc 的链接 - Optional

关于java - 如果使用 try{}catch{} 捕获错误,代码是否会继续执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49835516/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com