NullPointerException,为什么报这种错误,让你知道原因却也云里雾里,整死人。。正所谓会了不难,难了不会。现在写下与大家分享。这种报错肯定是java代码的错。以下是从网上看到的,很好:
[ 所谓空指针异常,是因为用空(null)去调用属性或方法。
null表示没有这个对象,既然没有这个对象,那么去调用他的属性和方法,就会报异常。
<--主要有以下几种原因:
1、使用了未初始化的变量(虽然已经声明)
2、使用了未初始化的对象(虽然已经声明)
3、使用了关键字或已存在的类名作变量对象方法或类名。
当应用程序试图在需要对象的地方使用 null 时,抛出该异常。
<--这种情况包括:
调用 null对象的实例方法。
访问或修改null对象的字段。
将null作为一个数组,获得其长度。
将null作为一个数组,访问或修改其时间片。
将null作为Throwable值抛出。]
但我看完之后还是感觉无从下手,不知错在什么地方。毕竟javabean没有任何语法上的错误,真是难过。语法上没错,逻辑上肯定有错。所以建议从逻辑着手。现在以自己的程序为例。我的程序是实现留言簿的。其过程是将表单的内容先写入DB,在从DB中读取数据到留言簿。下面是我解决问题的流程:
1、数据库问题。抛出空指针异常,那就是数据没有传过来。自信已经把Oracle搞定(专做的服务器,本机只安装客户端就ok。甲骨文也真是名不虚传,也能整死人),只是连通没有测试到底能不能自如读写数据。试试才发现不能,为什么,没有Oracle jdbc驱动,此时激动不已,以为原因很有可能就在这里。。百般之后,数据库已经没有问题,但仍然NullPointerException。。。。。继续努力
2、还是要走逻辑。无论怎么执行程序,发现数据表是空的,显然没有执行数据写入操作。切断从DB中读取数据到留言簿的逻辑。于是就可以先来排查此之前的逻辑问题。为什么会写入失败?此时我尝试不把表单中的数据写入数据库,而是通过jsp页面输出。奇怪的问题出现了,使用Bean的属性方法没有问题,而使用getProperty失败。为什么?前者是直接调用Bean的属性方法,当然没问题。后者则不同,为了获得属性a的值,默认使用的bean方法为getA(),如果javabean中写为了getAb()那就肯定不行了。我正是犯的这个错误。。。。汗阿。这样一来值传不过去,在写入DB时所对应的变量当然是空的了。