
记录一次空指针异常(NullPointerException)的断点调试
发布日期:2021-05-06 15:12:18
浏览次数:13
分类:技术文章
本文共 904 字,大约阅读时间需要 3 分钟。
前提:SalariedEmployee
(月薪资) 和HourlyEmployee
(时薪资)子类继承Employee
的抽象父类,来获取父类里的属性/方法,并重写扩展为自己的方法。
先来看下我的报错情况:NullPointerException

- 此处输出的3是因为我获取了一下当前的月份,所以基本锁定在输出语句
System.out.println(month);
也就是24行之后;
空指针异常:是一个运行级别的异常,即只有在运行时才会抛出
在看到这个异常之后,我首先想我的数组是存在的,有没有初始化?有;访问的对象是否存在?存在;对象是否为空?应该不为空(结果是空的,草率了)NullPointerException
;
- 断点调试:主要针对24行以后的代码:可以看到
emps[0] = null; emps[1] = null;
首先我确定了数组有初始化后,其次new SalariedEmployee()
和new HourlyEmployee()
是没问题的;接着name/number/birthday
等的赋值操作都是调用的子类的toString()
方法; - 继续往下走,果然显示
toString()
方法抛出了NullPointerException
; - 首先两个子类的
toString()
方法都是重写的父类的toString()
方法,但方法内部调用了super.toString();
- 继续往下走,可以看到父类
Employee
的toString()
方法只是return
了name,number,birthday.toDateString()
方法而已; - 想着总不可能变量出错吧,检查
birthday.toDateString()
方法,里面也只是return
了MyDate
的属性,且没有问题; - 一路都没有问题,不得不去检查
Employee
的属性了,好吧,破案了!属性没有问题,构造器里空空如也,没有this
调用,所以当调用此构造器时,输入的name/number/birthday
将不能传给此时正在创建的对象,当然也就无法输出了;8.破案后的正常输出!
名言(我说的):
debug
很难搞,但debug
成功后还好:)
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月01日 00时02分06秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
VTK:IO之DumpXMLFile
2019-03-03
VTK:IO之JPEGReader
2019-03-03
VTK:IO之MetaImageReader
2019-03-03
VTK:IO之WriteVTI
2019-03-03
VTK:图片之Actor2D
2019-03-03
VTK:图片之ImageCorrelation
2019-03-03
VTK:图片之ImageExport
2019-03-03
VTK:图片之ImageGridSource
2019-03-03
VTK:图片之ImageMathematics
2019-03-03
VTK:图片之ImageOrientation
2019-03-03
VTK:图片之ImageStack
2019-03-03
VTK:图片之ImageToPolyDataFilter
2019-03-03
VTK:图片之ImageToStructuredPoints
2019-03-03
VTK:图片之ImageValueRange
2019-03-03
VTK:图片之Interpolation
2019-03-03
VTK:图片之PickPixel
2019-03-03
VTK:图片之RGBToHSV
2019-03-03
VTK:图片之ResizeImageDemo
2019-03-03
VTK:隐式函数之ImplicitQuadric
2019-03-03
VTK:隐式函数之ImplicitSphere
2019-03-03