黑马程序员技术交流社区

标题: 空指针异常的问题 [打印本页]

作者: 许冉    时间: 2011-10-8 12:17
标题: 空指针异常的问题
在练习银行业务调度时
时不时的抛个空指针异常,偶尔也不抛

可以为null值的对象也会抛吗?
什么情况下才会抛这个异常
在写代码的时候不知道该怎么避免它


作者: 刘洋    时间: 2011-10-8 12:29
打个断点跟一下,看看在哪抛的异常,那个对象肯定没有初始化。
作者: 姚志华    时间: 2011-10-8 13:07
太好了,你会写银行的代码,有时间教教我吧
作者: ila123    时间: 2011-10-8 13:29
API注释里是这样写的,其实通俗的说就是引用没有存在的东西就报空指针异常。在JavaWEB中经常遇到,比如表单里有一个叫userName的属性,你用request去取useName结果肯定取不到,但你已经把这个值附给了user对象,当你用user对象调用userName属性时就会报这样的异常。。。。etc
Thrown when an application attempts to use {@code null} in a
case where an object is required. These include:
//当应用程序试图在需要对象的地方使用 null 时,抛出该异常。这种情况包括:
1、Calling the instance method of a {@code null} object.//调用 null 对象的实例方法
2、Accessing or modifying the field of a {@code null} object.//访问或修改 null 对象的字段。
3、Taking the length of {@code null} as if it were an array.//获取null数组对象的长度
4、Accessing or modifying the slots of {@code null} as if it were an array.//获取或修改null数组对象的时
   间片
5、Throwing {@code null} as if it were a {@code Throwable} value.//将null作为Throwable的值抛出
Applications should throw instances of this class to indicate other illegal uses of the {@code null} object.
//应用程序应该抛出该类的实例,指示其他对 null 对象的非法使用。
作者: 成杰    时间: 2011-10-8 13:31
空指针异常有很多方面的原因,对象没有初始化等,在碰到这类问题时,用Debug耐心的调试,平时养成良好的编程习惯,能够减少这方面的错误。
作者: 许冉    时间: 2011-10-8 16:24
姚志华 发表于 2011-10-8 13:07
太好了,你会写银行的代码,有时间教教我吧

跟着老师的视频写的,不会原创
作者: 许冉    时间: 2011-10-8 16:28
ila123 发表于 2011-10-8 13:29
API注释里是这样写的,其实通俗的说就是引用没有存在的东西就报空指针异常。在JavaWEB中经常遇到,比如表单 ...

功力不够,有点看不懂
作者: 巴蜀贤君    时间: 2011-10-8 19:21
空指针异常,主要检查值在传递的过程中是否为空!呵呵。。。抛异常是好事啊!耐心的检查一下
作者: ila123    时间: 2011-10-9 12:45
xuan 发表于 2011-10-8 16:28
功力不够,有点看不懂

是我表述能力不够,你就看1,2吧, 这是最常遇到的。
作者: 张超超    时间: 2012-4-19 09:39
对于空指针异常,这里有个总结:
NullPointerException由RuntimeException派生出来,是一个运行级别的异常。意思是说可能会在运行的时候才会被抛出,而且需要看这样的运行级别异常是否会导致你的业务逻辑中断。就不多说了。其实异常的处理是一个很有意思的话题,不仅仅只是NullPointerException。比如在DBC中有这么一个例子:你需要打开一个文件读,可能是C:\Data.txt,文件却没有找到,叫不叫异常?你如果需要打开另外一个文件,比如是C:\boot.ini,文件也没有找到,叫不叫异常?第一种情况不叫“异常”,因为C:\Data.txt没有找到应该是你能预计到的情况,那个文件可能存在,也可能不存在,这是需要你自己处理的。而第二种情况确叫做异常,因为正常情况下,C:\boot.ini应该被期望存在的,如果运行时丢失了这个文件,就是运行级别异常。在JDK中也有相应的例子,比如FileInputStream, BufferReader, StringTokenizer处理到达尾部的情况就是不一样的。

希望对你有帮助




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2