Springboot全局异常捕获及try catch区别解析
作者:江湖阿强 时间:2022-03-02 17:44:07
今天在码代码的时候突然想到这个问题,觉得有点困惑。在网上也翻阅不少帖子其中有一个帖子给了我一个思路,其实也是解释了基础概念。
概念一:try catch 语句在try里面捕获到异常之后会进入catch子句内,执行catch内的代码。
概念二:springboot中的全局异常处理在捕获到异常之后,异常代码之后的语句是不会再运行了的
那么从我一开始思路理解开始,这个时候我觉得这2个的功能用处都是在代码出现异常情况的时候对其进行处理,且向调用者(或者就是用户)返回一个友好的提示,那这2个有啥区别呢,重点来了……
业务场景一:某个字段必须保证唯一,例如:不允许存在同一个name的数据,这是大家开发过程中很常见的了,调用新增接口的时候你需要先查一遍该数据在库里是否存在,如果存在就返回“该数据已存在”,并且不再执行后面的插入动作。到此时我个人觉得try catch 和全局异常处理达到的效果是一样的。
业务场景二:某个字段是需要提示用户“该数据已存在”,但是但是但是……我也允许你新增一个同样的数据,我就只是单纯要提示一下你而已,并不阻止你继续插入这条数据。这个时候有木有突然觉得就不一样了,如果是全局异常处理的话,提示你“该数据已存在”之后就不运行后面的插入代码了,而try catch是可以在抛出异常信息“该数据已存在”的时候进入catch代码块执行插入操作的。
就是不要认为在有全局异常处理之后,try catch就没用了。不知道我这样算不算牵强的解释
图一(使用只全局异常的情况下,无法执行到else子句内的insert操作)
图二(在抛出异常之后,进入catch子句仍然执行insert动作)
来源:https://www.cnblogs.com/aqiangtester/p/13174114.html
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Java泛型类与泛型方法的定义详解
Java多线程 两阶段终止模式Two-Phase Termination Patter
springboot实现FastJson解析json数据的方法
浅谈Java中向上造型向下造型和接口回调中的问题
![](https://img.aspxhome.com/file/2023/1/59151_0s.jpg)
ReadWriteLock接口及其实现ReentrantReadWriteLock方法
![](https://img.aspxhome.com/file/2023/3/59873_0s.png)
Android使用Rotate3dAnimation实现3D旋转动画效果的实例代码
![](https://img.aspxhome.com/file/2023/9/85449_0s.png)
Android RecyclerView基本使用详解
![](https://img.aspxhome.com/file/2023/6/86016_0s.gif)
VSCode 搭建 Arm 远程调试环境的步骤详解
![](https://img.aspxhome.com/file/2023/8/104448_0s.png)
简述Java中的四种引用类型
Java 关于时间复杂度和空间复杂度的深度刨析
![](https://img.aspxhome.com/file/2023/8/59358_0s.jpg)
详解Spring注入集合(数组、List、Map、Set)类型属性
SpringBoot集成Beetl后统一处理页面异常的方法
![](https://img.aspxhome.com/file/2023/2/59222_0s.jpg)
Java关键字instanceof用法及实现策略
![](https://img.aspxhome.com/file/2023/0/58560_0s.png)
详解备忘录模式及其在Java设计模式编程中的实现
![](https://img.aspxhome.com/file/2023/6/58436_0s.jpg)
Spring Boot 在启动时进行配置文件加解密的方法详解
Android RecyclerBarChart绘制使用教程
![](https://img.aspxhome.com/file/2023/1/83521_0s.png)
Java设计模式之java命令模式详解
![](https://img.aspxhome.com/file/2023/5/59685_0s.png)
java搭建ftp/sftp进行数据传递的全过程
![](https://img.aspxhome.com/file/2023/6/60486_0s.png)
MyBatis-Plus多表联查的实现方法(动态查询和静态查询)
![](https://img.aspxhome.com/file/2023/9/59839_0s.png)