千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > JDBC操作时竟然NullPointerException!看我怎么一招搞定它

JDBC操作时竟然NullPointerException!看我怎么一招搞定它

来源:千锋教育
发布人:syq
时间: 2022-09-20 10:25:14 1663640714

  一. 前言

  每一个程序猿在曲迂奋进的成神路上,都会遇到一些大大小小的妖魔和臭虫阻碍,可以说这些bug会伴随着我们整个的职业生涯。想当年小编也是经历了无数次的痛苦挠头,数不清的排错与实验,丢掉了不知道多少根头发,最后才以”半秃之身“成就了今天的自己。所谓"不经风雨,怎能见彩虹!不见bug,怎能成神",正是如此。

NullPointerException

  今天小编就用自己十几年的功力,来教大家如何解决我们开发路上遇到的常见bug。

  遇见bug,淡定莫慌!小编告诉你,心平气和地对待bug,去分析,去排错!

  二. NullPointerException异常

  为了更好的教会大家如何解决异常,今天小编就用一个Java开发时最常见的空指针异常来进行演示,我们一起来看看NPE异常的解决过程。如下图所示:

15 (1)

  在这里给大家准备了一个经典的NPE空指针异常。当出现上面问题的时候,有很多小白都会不知所措,遇到问题完全没有头绪,抓耳挠腮的就是不知道如何下手解决。也有一些稍微表现好点的同学,会在第一时间进行百度,或者是问老师,问其他同学,最后会知道自己遇到了大名鼎鼎的空指针异常,但至于为什么出现这个异常,则又完全没有了头绪。小编作为一个过来人,对小白的这些表现其实是感同身受的。

  今天就那么以NPE为例,带着大家层层分析,一点点教会你如何解决异常。

  三. 异常分析

  1.NullPointerException

  首先我们要搞清楚,自己遇到的异常到底是什么?就比如我们今天所说的空指针,到底是怎么回事呢?

  java.lang.NullPointerException:空指针异常,是指我们在代码中调用某个类对象时,结果在代码执行期间JVM虚拟机发现该对象没有赋值,即值为null,此时就会出现NullPointerException异常。

  2.一个案例

  我们可以来看看给大家设计的下面这个案例。

  2.1 测试接口

  在下面的代码中,我们会通过JDBC的方式,将数据库表中的所有员工信息查询并封装到List集合中,并使用单元测试来测试接口功能。代码如下:

16 (1)

  2.2 查询功能

  上面的代码执行之后,我们会在控制台的异常信息中发现,在第29行码"com.qf.test.TestEmployee.testFindAllEmp(TestEmployee.java:29)"中出现了空指针问题。如果我们仔细观察,会发现第29行代码,又在调用第42行代码:"com.qf.dao.impl.EmpDaoImpl.findAllEmp(EmpDaoImpl.java:42)"。我们继续阅读第42行代码,如下图所示:

b27bdee0-013f-451f-b9c6-2370eab4fb2f_output

18 (1)

  该方法的逻辑是要将查询到的多条记录都封装到List集合中,而List集合里添加的是员工对象,我们上面代码的错误提示的就是出现在这个方法中的第42行。而42行刚好就是我们从数据库中得到每一行每一列的字段信息。

  细心的同学会看到,我们上面的Emp emp = null ; 这里只是声明了Emp对象,但并没new。我们每循环一次就表示会封装一个员工信息到集合中,但却没有给emp对象赋值,所以此时emp对象就是null。

  这样经过层层摸排,我们就知道了产生空指针的真正原因所在,是因为我们没有给某个对象赋值!那么该问题怎么解决呢?

  四. 解决办法

  通过上面的代码分析,我们发现出现NullPointerException异常的原因,是因为我们在接口实现类中没有给Emp对象赋值,导致emp对象为null。当我们使用null去调用对应的方法来封装数据时,就会出现空指针异常。其实空指针异常解决起来也比较简单,我们只需要在第42行代码前面加入如下操作:

19

  上面的代码,我们只是增加了给emp对象赋值的过程!这样就解决了空指针异常。

  五. 总结与反思

  很多初学者在刚开始学习时,有时候一个变量定义错了,或者是为了给变量赋值,都可能会引发一系列错误。一旦出现错误,很多初学者往往要花费几十分钟甚至几个小时的时间去排查故障,甚至还有一些同学最后也搞不定这些错误,严重地挫伤了学习的积极性。

  其实初学者遇到的绝大多数问题,都是因为粗心大意造成的。我们以后在写代码时,不要去求快,而是要求稳,每一行代码都要认真思考琢磨,用心去打磨自己的项目,这正应了我们的一句老话:”磨刀不误砍柴工“。

  今天的NullPointerException异常解决过程,给了我们初学者一个警醒,写完业务代码后,一定要再梳理一遍业务流程,尽量要做到以下几点:

  编写业务方法之后,根据业务需求自己再梳理一遍业务的实现过程;

  如果出现了问题,可以打断点一步步往下调试,并结合简单的输出语句验证输出结果;

  只要你能够按照小编的流程走,你会发现原来bug也没有那么可怕。现在你知道异常该怎么解决了吗?

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT