记录一次空指针异常(NullPointerException)的断点调试
前提: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
成功后还好:)
记录一次空指针异常(NullPointerException)的断点调试相关推荐
- IDEA--IDEA debug断点调试技巧
目录 一.Debug开篇 二.基本用法&快捷键 三.变量查看 四.计算表达式 五.智能步入 六.断点条件设置 七.多线程调试 八.回退断点 九.中断Debug Debug用来追踪代码的运行流程 ...
- IntelliJ IDEA-Debug断点调试 看这篇文章就够了
详解IntelliJ IDEA-Debug断点调试 如今,IntelliJ IDEA 目前深受广大开发者喜爱,我们在实际开发工作中,不管是用来阅读源码还是在开发过程中都需要进行代码调试. 以下为大家准 ...
- clodeblocks debug断点调试_Intellij IDEA高阶DEBUG大杀器
前言 目前工作中由于环境复杂等客观因素,无法在本地启动项目进行 Trouble Shooting,需要打开测试环境的 DEBUG 端口,进行远程调试.为了不影响其他用户同时使用测试环境以及相关系统的正 ...
- 又掌握了一项新技能 - 断点调试 Gradle 插件
前言 最初开发Android应用程序的时候,肯定是在打log调试,然后慢慢地觉得打log效率太低下了,不能快速定位问题,于是走上了断点调试之路.Gradle插件也一样,从会写插件那一刻起到现在,一直用 ...
- 大型前端项目的断点调试共享化和复用化实践
作者:enoyao,腾讯工程师 背景 随着我们项目越来越大,我们有可能需要维护很多的模块,我们腾讯文档 Excel 项目大模块有 10 几个,而每个大模块分别有 N 个小模块,每个大模块下的小模块都有 ...
- vscode+php+phpstudy:断点调试(f5后vscode无法继续下一步;浏览器无法断点,直接返回执行结果的解决方法)
文章目录 前言 1.设置phpstudy 2.设置vscode 前言 以前用的phpstorm断点调试,今天突然想用vscode断点调试,就是不能继续执行断点下一步,都是如下图所示 看了诸多博客,步骤 ...
- PHP笔记-使用PHPStorm断点调试php代码
最近在撸php,书上都不交断点调试,这尼玛坑得很,没有断点的开发程序,就是坑,通过查阅和摸索,调试成功,在此记录下: php版本:7.1 phpstorm版本:2020.3 首先运行下: <?p ...
- 不能断点调试python_为Python调试构建一个不间断的断点
不能断点调试python 这是Rookout团队如何为Python建立不间断断点的故事,以及我们在此过程中学到的一些经验教训. 我将在本月于旧金山的PyBay 2019上展示有关Python调试的所有 ...
- VS2008无法下断点调试的原因
VS2008单步调试时出错,原来的断点处显示一个空心圆加一个右下角的警告图标,调试无效,会直接跳过该断点.鼠标放在该断点上有如下提示: The breakpoint will not currentl ...
最新文章
- tensorflow 之 tf.reshape 之 -1
- 著名开源项目_著名开源项目案例研究
- 一起学微软Power BI系列-官方文档-入门指南(2)获取源数据
- 是时候详细探究webview了
- 双系统(win10 1803+deepin 15.7)安装问题
- HTML元素基础学习
- vijos p1782——借教室(noip2012提高组第2题)
- 比深度学习更值得信赖的模型ART
- 如何列出所有用户的所有cron作业?
- SQL Server 新增数据表数据
- 微软高性能网络编程示例程序
- 234.回文链表(力扣leetcode) 博主可答疑该问题
- OI队的土豆树(C++)
- 增值电信业务经营许可证在怎么申请 办理攻略在这里
- 人工神经网络的数学内涵,神经网络的数学表达式
- word/exce转lPDF乱码(思源字体)
- 20189217 2018-2019-2 《密码与安全新技术专题》第11周作业
- 巴西龟饲养日志-----黑壳虾
- initWithFrame/initWithCode/awakeFromNib调用
- 如何使用api调用AI抠图服务