正确的方法来处理Android Studio的NullPointerException lint警告

Hac*_*ord 33 java android lint nullpointerexception android-studio

我是android/java编程的新手,我很困惑如何正确处理这个警告.

方法调用''可能产生'Java.lang.NullPointerException'

在此输入图像描述

我应该断言要删除警告吗? 在此输入图像描述

或者说是运行时异常? 在此输入图像描述

任何帮助,将不胜感激.

mat*_*ash 29

我怀疑这个问题可以得到最终的回答,因为这是一个意见问题.或者至少我相信 - 也是一种观点.:)

我知道你想要"0警告"(一个非常值得称赞的目标),但可能没有"一刀切"的问题.那说......

事情,我相信你应该不会做的事:

  • 使用断言.虽然您可以添加断言语句,但Dalvik会忽略它们.您可以根据需要配置仿真器以使用它们,但不能使用真实设备(请参阅我可以在Android设备上使用断言吗?).因此虽然它可能会删除警告,但在实践中它是无用的.
  • 抛出方法NullPointerException.一般来说,这是一个坏主意.在这种情况下,既然你可能会覆盖 onOptionsItemSelected(),那甚至都不可能.

检查(variable != null)通常是最好的方法.但是,如果有的话,该怎么做才会提出其他一些选择.

  • 如果这是一个问题,你可以恢复,即你可以继续申请,即使searchView不存在,只需这样做.例如,只需从方法返回.记录这种情况是个好主意,所以你可以在测试时发现它.
  • 否则,如果无法继续,则抛出异常.您希望尽早失败,以便轻松检测到问题.这种情况的一个合理的例外是IllegalStateException(参见Java等效于.NET System.InvalidOperationException).它基本上表明此方法是在不适当的时间执行的.但要小心,因为RuntimeException这些异常是未经检查的,因此可能会导致应用程序崩溃.


Her*_*t74 27

我开始使用了

@SuppressWarnings("ConstantConditions")

在简单的方法,我确定id不是null.

  • 完美,这就是我们想要的.仅对我们确定id不能为null的方法禁用检查. (2认同)

Mat*_*Pag 5

@ Herrbert74的建议确实可以正常工作,但是有时最好不要@SuppressWarnings("ConstantConditions")在整个方法中添加a (如果它不是很简单的话),最好的方法是//noinspection ConstantConditions在警告行上使用。

这些是我的经验法则:

  • @SuppressWarnings("ConstantConditions")方法简单时使用

  • 使用//noinspection ConstantConditions时,该方法是复杂的,你需要删除只在特定的行警告


归档时间:

查看次数:

18901 次

最近记录:

6 年,3 月 前