`
cometlj
  • 浏览: 114050 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

关于NullPointerException的引发原因

阅读更多

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时所对应的变量当然是空的了。

分享到:
评论

相关推荐

    深入学习Spring Boot排查 @Transactional 引起的 NullPointerException问题

    主要介绍了深入学习Spring Boot排查 @Transactional 引起的 NullPointerException问题,需要的朋友可以参考下

    JAVA面试大全

    访问null的对象时会引发NullPointerException。另一种情况就是Java允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。

    Java程序员经典面试题37道及答案

    NullPointerException。另一种 情况就是 Java 允许程序员扩展这种语义检查,程 序员可以创建自己的异常,并自由选择在何时用 throw 关键字引发异常。所有的异 常都是 java.lang.Thowable 的子类。

    Java API中的异常类体系框架捕捉及详解.docx

    o检查异常(其他的一些异常):引起该异常的原因多种多样,比如说文件不存在或者是连接错误。该异常必须手动在代码里添加捕获语句来处理该异常。从程序语法角度讲是必须警醒处理的异常,如果不处理,程序就不能编译...

    java面试题集及答案解析

    访问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。

    各大公司Java面试题

    访问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。

    java面试的常见问题

    访问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。

    Java面试题集.rar

    null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员 可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable 的子类。

    Java面试题笔试题大全

    访问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。

    java中常见的异常类

    java中常见的异常类 1. java.lang.nullpointerexception

    android xml文件操作

    IOException, SecurityException, NullPointerException, ParserConfigurationException { return XmlUtils.parseForDoc(new FileInputStream(file)); } /** * 将一个xml字符串解析成Document对象。 ...

    2022年25道Java经典面试题(附答案)

    访问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。 2. ...

    大厂java面试题库集锦

    访问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。 2. ...

    收藏的JAVA面试题大全

    访问null的对象时会引发 NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用 throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。 ...

    JavaSE 异常处理.pdf

    其中,ExceptionType表示捕获的异常类型,可以是Java中任何一个异常类的名称,如ArithmeticException、NullPointerException等等。当在try块中的代码发生了与ExceptionType相匹配的异常时,程序会跳转到catch块中...

    计算机Java、网络面试资料

    访问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。 2. ...

    Scala基础知识01

    option[T]主要是用来避免NullPointerException异常的(Option本身是一个容器) Option、 None、 Some 是 scala 中定义的类型,它们在 scala 语言中十分常用,因此这三个类型很重要。 None、 Some 是 Option 的子类,它...

    JAVA面试题集合面试技能大全

    访问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。 2....

    定罪

    它具有用于数据库类的对象的构造函数,扫描器可以将文本文件的一行读取为字符串,行拆分以逗号将行拆分为String数组,将影片添加到在数据库中,如果未设置参数in中的对象,则引发NullPointerException;另一个函数...

    java 异常总结

    关于异常的全部说明,在api里都可以查阅。 算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数组负下标异常:NegativeArrayException 数组下标越界异常...

Global site tag (gtag.js) - Google Analytics