Springboot全局异常捕获及try catch区别解析
江湖阿强 人气:0本文着重讲解了Springboot全局异常捕获及try catch区别解析,文中通过代码实例讲解的非常细致,对大家的学习或者工作具有一定的参考学习价值,欢迎大家阅读和收藏
今天在码代码的时候突然想到这个问题,觉得有点困惑。在网上也翻阅不少帖子其中有一个帖子给了我一个思路,其实也是解释了基础概念。
概念一:try catch 语句在try里面捕获到异常之后会进入catch子句内,执行catch内的代码。
概念二:springboot中的全局异常处理在捕获到异常之后,异常代码之后的语句是不会再运行了的
那么从我一开始思路理解开始,这个时候我觉得这2个的功能用处都是在代码出现异常情况的时候对其进行处理,且向调用者(或者就是用户)返回一个友好的提示,那这2个有啥区别呢,重点来了……
业务场景一:某个字段必须保证唯一,例如:不允许存在同一个name的数据,这是大家开发过程中很常见的了,调用新增接口的时候你需要先查一遍该数据在库里是否存在,如果存在就返回“该数据已存在”,并且不再执行后面的插入动作。到此时我个人觉得try catch 和全局异常处理达到的效果是一样的。
业务场景二:某个字段是需要提示用户“该数据已存在”,但是但是但是……我也允许你新增一个同样的数据,我就只是单纯要提示一下你而已,并不阻止你继续插入这条数据。这个时候有木有突然觉得就不一样了,如果是全局异常处理的话,提示你“该数据已存在”之后就不运行后面的插入代码了,而try catch是可以在抛出异常信息“该数据已存在”的时候进入catch代码块执行插入操作的。
就是不要认为在有全局异常处理之后,try catch就没用了。不知道我这样算不算牵强的解释
图一(使用只全局异常的情况下,无法执行到else子句内的insert操作)
图二(在抛出异常之后,进入catch子句仍然执行insert动作)
加载全部内容