今天在码代码的时候突然想到这个问题,觉得有点困惑。在网上也翻阅不少帖子其中有一个帖子给了我一个思路,其实也是解释了基础概念。
概念一:try catch 语句在try里面捕获到异常之后会进入catch子句内,执行catch内的代码。
概念二:springboot中的全局异常处理在捕获到异常之后,异常代码之后的语句是不会再运行了的
那么从我一开始思路理解开始,这个时候我觉得这2个的功能用处都是在代码出现异常情况的时候对其进行处理,且向调用者(或者就是用户)返回一个友好的提示,那这2个有啥区别呢,重点来了……
业务场景一:某个字段必须保证唯一,例如:不允许存在同一个name的数据,这是大家开发过程中很常见的了,调用新增接口的时候你需要先查一遍该数据在库里是否存在,如果存在就返回“该数据已存在”,并且不再执行后面的插入动作。到此时我个人觉得try catch 和全局异常处理达到的效果是一样的。
业务场景二:某个字段是需要提示用户“该数据已存在”,但是但是但是……我也允许你新增一个同样的数据,我就只是单纯要提示一下你而已,并不阻止你继续插入这条数据。这个时候有木有突然觉得就不一样了,如果是全局异常处理的话,提示你“该数据已存在”之后就不运行后面的插入代码了,而try catch是可以在抛出异常信息“该数据已存在”的时候进入catch代码块执行插入操作的。
就是不要认为在有全局异常处理之后,try catch就没用了。不知道我这样算不算牵强的解释
图一(使用只全局异常的情况下,无法执行到else子句内的insert操作)
图二(在抛出异常之后,进入catch子句仍然执行insert动作)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自学编程网。
- 本文固定链接: https://zxbcw.cn/post/189386/
- 转载请注明:必须在正文中标注并保留原文链接
- QQ群: PHP高手阵营官方总群(344148542)
- QQ群: Yii2.0开发(304864863)