SSM中的DAO层的编码小技巧——利用运行时异常解决返回值歧义

我们在写SSM时,需要写DAO层与数据库进行交互,然而,我们会发现,与数据库的交互,肯定会有异常出现,此时需要我们进行捕获。
所以通常而言,我们的DAO层的代码都会如下:
在这里插入图片描述
比如上面的例子,查询商城的订单详情,我们需要向数据库进行查询。
我们分析下上面的代码,可以发现,该方法的执行结果会有三种情况出现:

  1. 如果成功查询,那么会返回我们想要的数据,执行完try语句后就直接结束该方法。
  2. 如果成功查询,并且查询的结果刚好为空,即数据库并没有符合要求的行数据,那么该方法也会在执行完try语句后返回null,然后结束该方法。
  3. 如果在执行try语句块的过程中,出现了异常,由于我们进行了try-catch,所以会跳转到catch处理掉异常,然后往下执行,所以接下来,会执行的是return null;也就是说,会返回null并结束该方法。

所以分析完这可能出现的三种情况,你们有没有发现问题的所在?
问题:如果我们采用这种编码方式,会导致外界调用该方法的调用者对返回的结果的意义不明确,即返回null时,外界的调用者不确定是因为程序执行出现异常才返回null,还是因为数据库压根就没有所要查询的数据,所以才返回null。因此,返回null的情况产生了歧义,意义不明确,不符合我们的程序运行规范(每个结果要有明确的意义)。


那么,要如何避免呢?很简单,耍个小心机就可以了!
在这里插入图片描述
在捕获完异常并处理后,添加划线的代码即可。
因为throw的是运行时异常,所以外界的调用者可以不对其进行处理。
通过我们这么一改造,那么该方法的运行结果就会出现如下三种情况:

  1. 如果成功查询,那么会返回我们想要的数据,执行完try语句后就直接结束该方法。
  2. 如果成功查询,并且查询的结果刚好为空,即数据库并没有符合要求的行数据,那么该方法也会在执行完try语句后返回null,然后结束该方法。
  3. 如果在执行try语句块的过程中,出现了异常,由于我们进行了try-catch,所以会跳转到catch处理掉异常,并且处理完异常后,又重新抛出一个运行时异常,最后结束该方法。

如此一来,我们就可以完美避开方法返回null时的意义存在歧义的现象啦!


好了,如果这篇文章对你有帮助的话,不妨点个关注吧~
期待下次我们共同讨论,一起进步~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值