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

我是Android / java编程的新手,并且对如何正确处理此警告感到困惑。

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

enter image description here

我应该断言删除警告吗?enter image description here

或者更确切地说是运行时异常?enter image description here

任何帮助将不胜感激。


答案 1

我怀疑这个问题能否得到最终的回答,因为这是一个观点问题。或者至少我是这么认为的——这也是一种观点。:)

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

我认为你不应该做的事情:

  • 使用断言。虽然您可以添加断言语句,但 Dalvik 会忽略它们。如果需要,可以将模拟器配置为使用它们,但不能将其配置为实际设备(请参阅我可以在 Android 设备上使用断言吗?)。因此,虽然它可能会删除警告,但在实践中它是无用的。
  • 让方法投掷 。一般来说,这将是一个坏主意。在这种情况下,由于您可能正在覆盖 ,因此甚至不可能。NullPointerExceptiononOptionsItemSelected()

检查通常是最好的方法。但是,如果是,该怎么办,提供了一些其他选择。(variable != null)

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

答案 2

我开始使用

@SuppressWarnings("ConstantConditions")

在简单的方法上,我确定id不是空的。


推荐