我来举例子那说明一下这个问题,先从受检无比你说起,假如有这样的一个业务逻辑,需要从某文件中读取数据某个数据,这个读取能操作可能是而文件被删掉等其它问题可能导致根本无法声望兑换最大限度地直接出现读取文件错误,那你就要从redis或mysql数据库中再去某些此数据,参考追加代码,getKey(Integer)为入口程序.
ok,看了以上代码以后,你也许心中有一些想法,原先受检异样这个可以再控制义务逻辑,对,没错,实际受检十分真的也可以操纵业务逻辑,不过一定不要千万不能这样使用,我们应该要合理的甩出异常,而且程序本身才是流程,十分的作用并不是当你通过不开去的时候可以找到的一个借口只不过是,它并不能不能以为完全控制程序流程的入口或出口,假如那样可以使用的话,是在将十分的作用扩展化,这样将是倒致代码复杂程度的增加,耦合性会能提高,代码可读性降低等问题 。
这样的话就是有不要可以使用这样的极其吗?其实也不是,在真有这样的需求的时候,我们也可以那样的话可以使用,仅仅一定不要,千万不能把它真充当控制流程的工具或手段 。那么也不知什么时候才要丢出这样的极其呢?要判断,假如调用者全局函数程序出错后,要先让动态创建者对这错误参与处理才可以不,柯西-黎曼方程这样的要求时,我们才能判断使用受检异常 。
接下来,我们来看看看非受检十分呢(RuntimeException),对于RuntimeException这种无比,我们总之很多见,比如说/等,那你这种十分我们时候抛出呢?
当我们在写某个方法的时候,可能会会一面之缘遇到了某个错误,我们认为这个问题时运行程序时很可能为发生的,而且理论上讲,没有这个问题的话,程序城就会算正常先执行的时候,它不满要求全局函数者你必须捕捉猎物这个十分,此时一抛RuntimeException异常 。
举个例子,当传来一个路径的时候,是需要赶往一个路径按的File对象:
上列例子是因为,要是动态链接库者调用getFiles(String)的时候如果path是空,那你就掷下空指针异样(它是RuntimeException的子类),调用者不用显示的并且try…catch…操作参与噬魂之手处理.这就那些要求动态创建者在调用这样的方法时先并且不验证,尽量减少发生RuntimeException.不胜感激:
应该要最好选择哪种无比
是从以上的描述和举例子,这个可以总结出一个结论,RuntimeException异常和受检异常之间的区别应该是:是否是强制那些要求调用者可以如何处理此无比,如果噬灵鬼斩那些要求调用者需要并且处理,那就就可以使用受检异常,不然就你选非受检十分(RuntimeException) 。好象来讲,如果不是没有特珠的要求,我们个人建议不使用RuntimeException异常 。
场景可以介绍和技术选型架构描述
正如我们所知,悠久的传统的项目是以MVC框架为基础接受的新的,本文要注意从在用restful风格接口的设计来亲身体验下异常处理的优雅 。
我们把关注点放在restful的api层(和web中的controller层类似于)和service层,做研究帮一下忙在service中要如何甩出异样,然后api层如何能通过捕捉猎物并且转变异常 。
建议使用的技术是:spring-boot,jpa(hibernate),mysql,假如对这些技术并非太熟悉,读者不需要自行阅读理解相关材料 。
业务场景描述
选择一个比较比较简单的业务场景,以电商中的收货地址管理为例,用户在移动端接受购买商品时,不需要通过收货地址管理,在项目中,提供给一些给移动端并且访问的api接口,如:直接添加收货地址,删除掉收货地址,改收货地址,默认收货地址设置,收货地址列表查询,单个确认发货地址查询等接口 。
推荐阅读
- 为什么花呗关了之后再开就用不了 花呗关闭后开通不了怎么解决
- 转什么为什么成语四个字
- 年夜饭的寓意 为什么要吃年夜饭
- 年夜饭为什么叫尾牙 年夜饭什么时候吃
- excel表格为什么下边没有shift了 excel中下方的sheet不见了
- 为什么SSL证书的价格差异那么大 ssl证书有两种
- 为什么右眼近视左眼不近视
- 为什么夏天下冰雹冬天不下
- 为什么白户贷款都批不下来
- 星星为什么会眨眼睛答案