专注Java教育14年 全国咨询/投诉热线:444-1124-454
赢咖4LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 编程基础Java空指针异常

编程基础Java空指针异常

更新时间:2020-07-31 16:03:02 来源:赢咖4 浏览1738次

在平时的业务开发中,空值处理是非常麻烦的,Java中的空指针异常让人崩溃,每次看到日志中出现的那些NPE Error日志,都让人痛不欲生。为了避免这么多空指针异常,你的Java程序中是不是遍布着null检查?

编程基础Java空指针异常

null是一个讨厌鬼

null语义不明,通常null什么都不能代表,而又什么都能代表。如果你不检查,空指针异常必定会在最关键的时候蹦出来。

比如说:

对于集合类型来说,空有两种含意:

1、变量是空引用,也就是变量没指向一个集合类型。

2、集合中元素数量为0。

所以经常我们要做如下的检查

list!=null&&list.size()>0

那我们就像上面一样在每一处都做空值检查如何呢?理论上可以,但是实际实行时却困难重重,可能会引起如下的问题:

增加代码长度

问题:大部分代码都是在检查空值上面;一个方法30行代码,有10行是检查各种参数,10行进行异常处理,5行进行业务处理,再写5几行注释。你是这是什么事儿啊。

减少写代码的乐趣

问题:注意力集中的时间段是非常宝贵的。现在的互联网公司,办公区开放、各部门都混坐一起,如果你跟产品和运营坐在一起,那么你从早到晚不停的被打扰,8小时工作时间能集中精力3个小时已经很不容易了。而这短短的有效时间内,还要编写大量的防御性代码,别人不知道,对于我来说,大量编写这样的代码经常会让我思路分散,反而导致我在真正的业务代码上面出错。

这个问题怎么破

实话是:很难破

多年编码后也仅仅总结了几个规约,可以减轻空值带来的痛苦:

对于空值最常用的办法就是:不相信任何输入输出值,每一个关键的参数都需要检查。关键的意思是:如果为空就影响业务处理了。

如果集合中没有元素,使用size为0的空集合对象,不要使用null。

除非null有特殊含意,方法返回的普通对象都不为null。如:从数据库查找对象的方法,如:findById,返回null表示没有找到对象。

使用基本的值类型,而不使用包装过的类型,如:使用int double等等,不使用Integer

免不了有null时,使用guava中的Optional对象,据说可以方便的检查和操作null,JDK8以后也在java.util包中增加了Optional对象。但是实际它的作用更多的是提醒程序员要注意空值处理而已。

集合对象中不保存null。

Map中不保存value为null的K-V对儿,也不用null做key。

使用高效工具对入参为null进行检查,如Spring中的Asserts工具类,Guava中的Preconditions工具类;

编程基础Java空指针异常

以上就是赢咖4java培训机构的小编针对“编程基础Java空指针异常”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>