什么是NPE,为什么说防止 NPE,是程序员的基本修养?
什么是NPE
NPE(java.lang.NullPointerException): 空指针异常。
NPE容易发生的场景
1.返回类型为基本数据类型,return 包装数据类型的对象时,自动拆箱有可能产生 NPE。
2.数据库的查询结果可能为 null。
3.集合里的元素即使 isNotEmpty,取出的数据元素也可能为 null。
4.远程调用返回对象时,一律要求进行空指针判断,防止 NPE。
5.对于Session中获取的数据,建议进行 NPE检查,避免空指针。
6.级联调用 obj.getA().getB().getC();一连串调用,易产生 NPE。
那如何减少NPE的发生呢?
1.遵守代码规范
一个好的代码规范可以在一定程度上减少错误的发生。这里推荐看阿里巴巴的Java开发手册,现已经更新到泰山版了,可以直接去官网下载来看。
2.使用Optional类
使用JDK8引入的新特性Optional 类来防止NPE 问题,因为Optional类最主要解决的问题就是NPE。
3.空值检测
使用if(obj == null)来检测我们需要检测的对象,当检测到Null时,则可以抛出针对性的异常类型。