try catch块的秘密
2024-09-05 04:28:51
最近有同事遇到问题:
她在4处手动抛运行异常,5处存在return语句,结果程序在2出现异常时没有抛出运行异常,导致事务不一致.
我们都知道,当程序出现异常时候并且在不采取任何措施的情况下,是会抛出异常并停止方法的.在catch中手动
抛运行异常也是会结束程序的,这两种情况都会触发springAOP的事务回滚,但为什么会出现这种情况呢?
讨论研究了之后才明白,原因是当如果要抛运行异常时,程序就会立马结束,无法执行finally,而finally是必须要执行的
所以,程序设定catch中的异常是执行完finally后才执行,所以,finally中有return就不会返回去
执行抛异常的操作了,同理,当catch中有return halloWord("小名")的时候是会先执行halloWord("小名"),等执行完
finally后才将halloWord("小名")的结果返回,最后结束.
最新文章
- Oracle笔记2-数据库设计
- Chrome的ERR_UNSAFE_PORT解决办法
- 在XP下安装PHP
- Sklearn库例子3:分类——岭回归分类(Ridge Regression )例子
- 利用MVC编程模式-开发一个简易记事本app
- JRebel_修改class后无法正确调试问题解决【2014-03-12】
- 基于事件的异步模式——BackgroundWorker
- oracle表空间查询维护命令大全之三(暂时表空间)史上最全
- JSON对象和字符串转换
- zepto callback
- Redis 学习笔记-入门
- MySQL my.cnf 配置文件注释
- 解决水平ListView在ScrollView中出现的滑动冲突
- MAC中使用APICloud同步代码错误解决办法
- Android相关面试题---面试官常问问题
- [总结] NOIP 前的考试记录
- Navicat For MySQL--外键建立与cannot add foreign key constraint分析
- SQL里执行CLR c#代码
- 手机也需“绿色环保”,省电类APP或将成为“标配”?
- rank() over,dense_rank(),row_number() 的区别
热门文章
- 15-MySQL DBA笔记-运维管理
- (十一)SpringBoot之文件上传以及
- IE浏览器 Table 兼容问题
- 50道高级sql练习题;大大提高自己的sql能力(附具体的sql)
- JS基础_构造函数修改
- RestControllerAdvice,ControllerAdvice
- Unity 自定义";==";操作符 [翻译来源blogs.unity3d,2014/05]
- vue-filters(过滤器)
- zabbix监控MySQL,Tomcat及配置邮件报警
- JAVA Calendar类获取上个月的第一天和最后一天