A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 许冉 黑马帝   /  2011-10-8 12:17  /  4002 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在练习银行业务调度时
时不时的抛个空指针异常,偶尔也不抛

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

评分

参与人数 1技术分 +1 收起 理由
admin + 1 回复你的人很多,问题解决了可以跟大家分享.

查看全部评分

9 个回复

倒序浏览
打个断点跟一下,看看在哪抛的异常,那个对象肯定没有初始化。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
太好了,你会写银行的代码,有时间教教我吧
回复 使用道具 举报
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 对象的非法使用。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
空指针异常有很多方面的原因,对象没有初始化等,在碰到这类问题时,用Debug耐心的调试,平时养成良好的编程习惯,能够减少这方面的错误。
回复 使用道具 举报
姚志华 发表于 2011-10-8 13:07
太好了,你会写银行的代码,有时间教教我吧

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

功力不够,有点看不懂
回复 使用道具 举报
ila123 黑马帝 2011-10-9 12:45:23
8#
xuan 发表于 2011-10-8 16:28
功力不够,有点看不懂

是我表述能力不够,你就看1,2吧, 这是最常遇到的。
回复 使用道具 举报
空指针异常,主要检查值在传递的过程中是否为空!呵呵。。。抛异常是好事啊!耐心的检查一下

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

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

希望对你有帮助
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马