如果你花了一些时间在Java中开发程序,在某些时候你肯定会看到以下异常:java.lang.NullPointerException。由于 .在本文中,我们将介绍一些在Java中处理的方法。NullPointerException NullPointerException
简单空值检查
请考虑以下代码段:
如果按原样运行此代码,则会出现以下异常:
Exception in thread "main" java.lang.NullPointerException
您收到此错误的原因是因为我们尝试执行的操作是 .length()str1null
一个简单的解决方法是添加一个空检查,如下所示:str1
这将确保,当 是 时,您不会在其上运行该函数。str1nulllength()
但您可能有以下问题。
如果 str1 是一个重要的变量呢?
在这种情况下,您可以尝试如下操作:
这个想法是,当你期望一个值是 ,最好检查那个变量。如果该值确实是 ,则采取替代操作。nullnullnull
这不仅适用于字符串,还适用于 Java 中的任何其他对象。
龙目岛空值检查
现在举个例子:
这里我们有一个接受三个参数的函数:、 和 。str1strListstr2
如果这些值中的任何一个被证明是,我们根本不想执行这个函数中的逻辑。null
您如何实现这一目标?
这就是龙目岛派上用场的地方。为了在代码中添加龙目岛库,请包含以下 Maven 依赖项:
以下是龙目岛检查的代码外观:null
在函数的每个参数之前,我们添加注释。@NonNull
另外,当我们调用此函数时,我们在函数调用周围放置一个块来捕获 。try-catch NullPointerException
如果函数中给出的任何参数原来是 ,则该函数将抛出一个 。然后,这将被块捕获。null NullPointerException try-catch
这确保了,如果任何函数参数被证明是 ,那么函数中的逻辑不会被执行,我们知道代码不会异常表现。null
这也可以通过一堆检查语句来完成。但是使用龙目岛可以帮助我们避免编写多个检查语句,并使代码看起来更干净。null null
列表和空值
假设您有一个列表,并且想要打印列表中的所有元素:
在循环访问列表之前,我们需要对列表进行检查。null
如果该检查不存在,则尝试循环访问列表将引发一个 。null null NullPointerException
映射和空值
让我们假设您需要访问映射中特定键的值的场景:
首先,我们需要对映射对象本身执行 null 检查。如果未执行此操作,并且映射为 ,则抛出 a。这是使用null Null PointerException testMap!=null
完成后,在访问特定密钥之前检查是否存在该密钥。您可以使用 检查密钥是否存在。如果未执行此操作,并且特定键不存在,则您将获得值。testMap.containsKey("first_key")null
是否有必要始终添加空检查?
如果您确定某个特定变量永远不会是 ,那么您可以避免添加检查。这可能适用于私有函数,您可以在其中控制进入功能的数据。null null
但是,如果您不确定对象的可空性,最好添加一个检查。null
法典
本文中讨论的所有代码都可以在此 Github 存储库中找到。
您现在知道如何在 Java 中进行处理了!NullPointerException