处理空指针异常(NullPointerException,简称 NPE)的核心思路是:预防优先、明确来源、合理兜底。下面从常见原因、预防方法、捕获处理、以及不同语言/场景的建议来说明。
null 对象调用方法或访问属性null,调用方未判断Integer -> int)时值为 nullnull 却直接使用if (obj != null) {
obj.doSomething();
}
nullnullreturn list != null ? list : Collections.emptyList();
Optional(Java 8+)Optional.ofNullable(obj)
.ifPresent(o -> o.doSomething());
@NotNull
@Nullable
配合 IDE 可在编译期发现问题。
Integer i = null;
int x = i; // 会抛 NPE
✅ 改为先判断:
if (i != null) {
int x = i;
}
try {
obj.doSomething();
} catch (NullPointerException e) {
// 记录日志或给默认值
log.error("obj 为 null", e);
}
⚠️ 不建议用 NPE 做正常流程控制,应优先预防。
Optionalnullptr空指针异常不是用来“捕获”的,而是用来“避免”的。
如果你愿意,可以把具体代码或报错堆栈发出来,我可以帮你精确定位是哪一行导致的空指针。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。