springboot中有了全局异常捕获,还需要try catch吗?

Posted aqiangtester

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot中有了全局异常捕获,还需要try catch吗?相关的知识,希望对你有一定的参考价值。

  今天在码代码的时候突然想到这个问题,觉得有点困惑。在网上也翻阅不少帖子其中有一个帖子给了我一个思路,其实也是解释了基础概念。

概念一:try catch 语句在try里面捕获到异常之后会进入catch子句内,执行catch内的代码。

概念二:springboot中的全局异常处理在捕获到异常之后,异常代码之后的语句是不会再运行了的

 

  那么从我一开始思路理解开始,这个时候我觉得这2个的功能用处都是在代码出现异常情况的时候对其进行处理,且向调用者(或者就是用户)返回一个友好的提示,那这2个有啥区别呢,重点来了……

  业务场景一:某个字段必须保证唯一,例如:不允许存在同一个name的数据,这是大家开发过程中很常见的了,调用新增接口的时候你需要先查一遍该数据在库里是否存在,如果存在就返回“该数据已存在”,并且不再执行后面的插入动作。到此时我个人觉得try catch 和全局异常处理达到的效果是一样的。

  业务场景二:某个字段是需要提示用户“该数据已存在”,但是但是但是……我也允许你新增一个同样的数据,我就只是单纯要提示一下你而已,并不阻止你继续插入这条数据。这个时候有木有突然觉得就不一样了,如果是全局异常处理的话,提示你“该数据已存在”之后就不运行后面的插入代码了,而try catch是可以在抛出异常信息“该数据已存在”的时候进入catch代码块执行插入操作的。

  就是不要认为在有全局异常处理之后,try catch就没用了。不知道我这样算不算牵强的解释

 

图1(使用只全局异常的情况下,无法执行到else子句内的insert操作)

技术图片

 

 

图二(在抛出异常之后,进入catch子句仍然执行insert动作)

技术图片

 

以上是关于springboot中有了全局异常捕获,还需要try catch吗?的主要内容,如果未能解决你的问题,请参考以下文章

springboot中添加全局异常捕获类

Springboot全局异常处理

SpringBoot配置全局异常捕获

springboot全局捕获异常

SpringBoot全局捕获异常示例

spring-- springboot配置全局异常处理器