异常处理丨一个小案例,带你解决NullPointerException

原创 千锋索尔

一. 需求背景

最近索尔老师给同学们讲了类和对象的基本概念及使用方法,并给大家留了个小练习,练习的题目是用一个数组来存储班级里的学生信息,其中包括学生的学号、姓名、年龄属性,最后要将学生的信息输出。这道题目看起来是很简单的,于是大家就开始疯狂地敲代码了...........

20分钟后,有学生的代码中出现了bug......

二. 实现代码

下图就是一个同学编写的代码,你看看有没有什么问题呢?

1. 学生类

这是定义的Student学生类,代码如下:

2. 学生测试类

这是定义的学生测试类,代码如下图所示:

3. 运行结果

上面的代码,运行后却出现了如下错误提示:

根据上图的异常信息可知,代码中出现了空指针异常!我们知道,导致空指针异常的原因是因为代码中的某个对象为空!

4. 异常原因分析

空指针异常很常见,但为什么会出现空指针呢?我们来分析一下具体原因吧......

根据提示我们可以看到,异常是在StudentTest类中的第28行发生的,那么我们就看看,在第28行哪个对象有可能是空的呢?第28行代码如下:

我们看看第28行代码,到底是哪个对象为空?这里显然是students[i]这个对象为空,从而导致了空指针异常!

那么为什么students[i]对象是空的呢?我们的Students数组不是已经new过了吗?

注意:在我们new对象数组的时候,只是为数组开辟了指定长度的内存空间,但这个数组中的元素默认是null哦!接下来我们可以调试下看是不是这样的!

根据debug的结果可知,果然是数组中的元素为null!

5. 异常解决

现在既然我们已经知道了故障原因,那又该怎么解决这个问题呢?

我们可以在第28行前new一个学生对象,并将其存储到数组中,如下图所示:

接下来我们把代码运行起来,再进行测试,会发现空指针异常的问题已经得到了解决!现在你知道空指针异常是怎么产生,以及怎么解决了吗?如果你还有其他问题,可以在评论区给索尔老师留言,我看到后会及时给你回复哦。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值