`
javabkb
  • 浏览: 53711 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

两个空指针的错

    博客分类:
  • J2SE
阅读更多
   前几天做项目重构的时候,莫名奇妙地发现两个空指针错误:
   第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.

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

相关推荐

    Sqoop空指针异常需要的jar包.rar

    Sqoop从MySQL导数据到HDFS上,如果报错空指针异常,需要的jar包。正常情况只要安装java-json.jar就可以。如果不行就都安装上。如果你用的是阿里云的EMR,安装完之后还报错的话,需求确认你的jar包中是否含有hive开头...

    面向Java和Kotlin混用代码的空指针分析方法研究

    空指针异常 是软件开发过程中一类常见的缺陷,是导致软件运行异常或者强制退出的一个重要原因。Kotlin作为近年来新兴的 门安卓开发官方语言,其自身对空问题有着严格的安全检查。然而,由于Kotlin出现时间较短以及...

    Java字符串比较方法equals的空指针异常的解决

    主要介绍了Java字符串比较方法equals的空指针异常的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    震惊!日志级别居然可能导致Dubbo出现空指针异常

    你可能是被标题吸引过来的,但这确实...两个系统均正常启动,但A服务运行时,报空指针异常,无法调用B服务: [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested excep

    C++智能指针实现(不用再担心你的内存泄露)

    设有Debug版本的断言,确保智能空指针不被使用。 /* 智能指针类 不能用于数组,指针指向的数据必须是new出来的 不能创造该类的指针 不能将任意实体指针分别赋值给两个不同的智能指针(通过构造函数或者=) */

    2016冬数据结构1考卷(1)1

    7. 对于二维或多维数组,分为 和__ __两种不同的存储方式 8. 一棵二叉树的根结点只有左子树、没有右子树,对其进行后序线索化后,其中的空指针域的个 9.

    函数指针.txt

    让我们来分析一下 左边圆括弧中的星号是函数指针声明的关键 另外两个元素是函数的返回类型(void)和右边圆括弧中的入口参数(本例中参数是空) 注意本例中还没有创建指针变量 只是声明了变量类型 ">函数指针 ...

    如何在VC++中两个对话框相互传递信息

    如何在VC++中两个对话框相互传递信息。采取避免在头文件中定义具体类型的指针变量,用定义空指针的方法绕过头文件重复包含的问题。

    11.第十一章 指针.txt

    与指针相关的两个运算符: (1)&:取地址运算符 一般形式: &变量名 表示取一个内存变量的地址。 (2)*:指针运算符(或称“间接访问”运算符) 一般形式: *指针变量名 通过指针变间接访问指针变量所...

    C++实现两个有序数组的合并

    本文实例为大家分享了C++实现两个有序数组合并的具体代码,供大家参考,具体内容如下 剑指offer面试题5延展题: 问题:有两个排序的数组A1...2.当数组名是一个nullptr指针,或者A1数组是一个空数组则返回; 3.当数组A1

    84、智能指针的原理、常用的智能指针及实现.pdf

    所以weak_ptr不保证它指向的内存⼀定是 有效的,在使⽤之前使⽤函数lock()检查weak_ptr 是否为空指针。 (4) auto_ptr 主要是为了解决"有异常抛出时发⽣内存泄漏"的问题 。因为发⽣异常⽽⽆法正常释放内存。 auto_ptr...

    leetcode怎么判断指针为空-Homework:在家工作

    合并两个有序数组 方法1 题解 主要思路:多用一个新的数组来放排序后的结果,然后将新数组赋值给nums1数组 主体的流程处理如下: 1.从下标0开始比较nums1,nums2中的元素,哪个元素小放在新数组nums3中 2.当其中一个...

    golang之两个结构体复制字段

    两个结构体(可能类型一样), 字段名和类型都一样, 想复制一个结构体的全部或者其中某几个字段的值到另一个(即merge操作), 自然想到可以用反射实现. package main import fmt import reflect // 用b的所有字段覆盖a的 ...

    你必须知道的495个C语言问题.pdf

    5.2 怎样在程序里获得一个空指针? 5.3 用缩写的指针比较“if(p)”检查空指针是否有效?如果空指针的内部表达不是0会怎样? NULL 宏 5.4 NULL是什么,它是怎么定义的? 5.5 在使用非零位模式作为空指针的内部表示的...

    数据结构与算法教学大纲程序代码

    3、假设有两个按元素值递增有序的线性表A和B,均以单链表作存储结构,试编写算法将A表和B表归并成一个按元素值递减有序的线性表C,并要求利用原表的空间存放C。 要求:熟练掌握线性表的单链式链接存储结构及在其上...

    你必须知道的495个C语言问题

    5.2 怎样在程序里获得一个空指针? 5.3 用缩写的指针比较“if(p)”检查空指针是否有效?如果空指针的内部表达不是0会怎样? NULL宏 5.4 NULL是什么,它是怎么定义的? 5.5 在使用非零位模式作为空指针的内部...

    《你必须知道的495个C语言问题》

    5.2 怎样在程序里获得一个空指针? 54 5.3 用缩写的指针比较“if(p)”检查空指针是否有效?如果空指针的内部表达不是0会怎样? 55 NULL 宏 56 5.4 NULL是什么,它是怎么定义的? 56 5.5 在使用非零位模式...

    springmvc例子1.1版本

    修改了原工程UserController.validate()报空指针的BUG。 采用JUnit4实现单元测试用例 Service类实现了事务管理 导入后,根据要链接的MySql数据库修改hibernate.xml和hibernate-test.xml,要在MySql建立两个数据库...

Global site tag (gtag.js) - Google Analytics