作者:小米和南瓜 | 来源:互联网 | 2024-12-07 13:55
考虑以下代码段:
if (str.isEmpty()) {
str = DEFAULT_STRING;
}
此代码段在某些情况下可能会抛出一个NullPointerException。为了避免这种情况,我们需要对条件进行适当的调整。下面列出了几种可能的选择,其中哪一种可以确保代码的安全执行而不引发异常?
A: str == null && str.isEmpty()
B: str == null || str.isEmpty()
C: str.isEmpty() && str == null
D: str.isEmpty() || str == null
正确答案是B。选项B利用了短路求值的特点,即当第一个条件(str == null
)为真时,就不会再检查第二个条件(str.isEmpty()
),从而避免了访问null对象的属性或方法而引起的异常。
相比之下,选项D则可能仍然导致NullPointerException,因为如果str
为null,那么尝试调用str.isEmpty()
将直接抛出异常,即使后续的条件是str == null
。因此,正确的做法是在调用任何可能引起异常的方法之前,先检查对象是否为null。