springboot中有了全局异常捕获,还需要trycatch吗?
今天在码代码的时候突然想到这个问题,觉得有点困惑。在⽹上也翻阅不少帖⼦其中有⼀个帖⼦给了我⼀个思路,其实也是解释了基础概念。
概念⼀:try catch 语句在try⾥⾯捕获到异常之后会进⼊catch⼦句内,执⾏catch内的代码。
概念⼆:springboot中的全局异常处理在捕获到异常之后,异常代码之后的语句是不会再运⾏了的
那么从我⼀开始思路理解开始,这个时候我觉得这2个的功能⽤处都是在代码出现异常情况的时候对其进⾏处理,且向调⽤者(或者就是⽤户)返回⼀个友好的提⽰,那这2个有啥区别呢,重点来了……
业务场景⼀:某个字段必须保证唯⼀,例如:不允许存在同⼀个name的数据,这是⼤家开发过程中很常见的了,调⽤新增接⼝的时候你需要先查⼀遍该数据在库⾥是否存在,如果存在就返回“该数据已存在”,并且不再执⾏后⾯的插⼊动作。到此时我个⼈觉得try catch 和全局异常处理达到的效果是⼀样的。
业务场景⼆:某个字段是需要提⽰⽤户“该数据已存在”,但是但是但是……我也允许你新增⼀个同样的数据,我就只是单纯要提⽰⼀下你⽽已,并不阻⽌你继续插⼊这条数据。这个时候有⽊有突然觉得就不⼀样了,如果是全局异常处理的话,提⽰你“该数据已存在”之后就不运⾏后⾯的插⼊代码了,⽽try catch是可以在抛出异常信息“该数据已存在”的时候进⼊catch代码块执⾏插⼊操作的。
就是不要认为在有全局异常处理之后,try catch就没⽤了。不知道我这样算不算牵强的解释
图1(使⽤只全局异常的情况下,⽆法执⾏到else⼦句内的insert操作)
springboot是啥
图⼆(在抛出异常之后,进⼊catch⼦句仍然执⾏insert动作)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论