两个空指针的错

   前几天做项目重构的时候,莫名奇妙地发现两个空指针错误:
   第1个,debug好多次之后发现基本类型引用到空的对象的时候会直接报空指针错误。业务代码就不贴了,来看一个小的测试例子吧:
  
 Integer i = null; int l = i; 

运行的时候会直接报空指针,原因也很简单基础类型不能直接引用null,所以直接改成int l = i == null ? 0 : i;
   第2个,数据库是oracle,ORM用的是ibatis,执行这条语句的时候select sum(..) from Table where .. ,若where条件未查询出符合条件的记录,那么返回null而不是返回0。所以仍然需要判断取出来的结果是否为null,判断若为null的话返回0.

   总结:越下层的代码越要执行保护性判断,特别是对于容易被忽略的基础类型,不能不负责任地直接传到上一层。
  

猜你喜欢

转载自javabkb.iteye.com/blog/1114638