【java bug】java.lang.NullPointerExceptio(空指针异常)

此处有坑: java.lang.NullPointerExceptio

针对上一篇博客【java】实现一个简单的小说文本阅读器(分页、翻页、页码跳转),在之后运行检验时发现一小bug —— java.lang.NullPointerExceptio。NullPointerException由RuntimeException派生出来,是一个运行级别的异常。就是说可能会在运行的时候才会被抛出,而且需要看这样的运行级别异常是否会导致你的程序逻辑中断。一个小问题致使卡了一段时间,因而对此类bug作一个整理。并对其中的几种情况作具体举例说明。

1. 对象的返回值为空

当一对象的返回值为空,并且程序中继续对这一对象(返回后为null)进行操作时,会报错。
例如我遇到的bug:
【java bug】java.lang.NullPointerExceptio(空指针异常)_第1张图片
看程序对应的118行,果然有问题:
在进行读文档操作时,循环两次后文档内容读结束,而此时规定读出16行,则在第三行开始即为空行,即line的值为空,此时无法对空行进行操作,因而异常抛出。
在这里插入图片描述
解决办法: 改变循环条件,使空行不参与其他操作

2. 对象的值为空时没有判断为空的条件

例如:
【java bug】java.lang.NullPointerExceptio(空指针异常)_第2张图片
解决:
加判断条件,即为空时不执行一些字符串操作
【java bug】java.lang.NullPointerExceptio(空指针异常)_第3张图片

3. 接口类型的对象没有用对应的类初始化

例如:
【java bug】java.lang.NullPointerExceptio(空指针异常)_第4张图片
解决:
按需要实例化对象
为了避免这种情况NullPointerException,请确保在使用它们之前,所有对象都已正确初始化。注意,当你声明一个引用变量时,你真的创建了一个指向对象的指针。在向对象请求方法或字段之前,您必须验证指针是否为空。
【java bug】java.lang.NullPointerExceptio(空指针异常)_第5张图片

4. 总结

出现空指针异常可从以下几点入手查找原因:

(1)调用null对象的实例方法。
(2)访问或修改null对象的字段。
(3)把长度null当作一个数组。
(4)像访问或修改null阵列一样访问或修改插槽。
(5)投掷null就好像它是一个Throwable 价值。
(6)应用程序应该抛出此类的实例来指示null对象的其他非法使用。
(7) NullPointerException对象可以由虚拟机构造,就像抑制被禁用和/或堆栈跟踪不可写一样。

拔坑指南: 总之尽量避免对空字符串进行操作。遇到此类异常抛出,按照提示的行查找错误,找行中会出现NULL的字符串。

你可能感兴趣的:(java编程,编程)