Spring中抛出异常时,既要要返回错误信息,还要做事务回滚
来源:互联网 发布:淘宝搜索结果不对 编辑:程序博客网 时间:2024/06/07 05:39
情况一:如果没有在程序中手动捕获异常,如下代码事务会回滚
- @Transactional(rollbackFor = { Exception.class })
- public void test() throws Exception {
- doDbStuff1();
- doDbStuff2();//假如这个操作数据库的方法会抛出异常,方法doDbStuff1()对数据库的操作会回滚。
- }
如果doDbStuff2()方法抛出异常,方法doDbStuff1()对数据库的操作会回滚。
情况二:如果在程序中自已捕获异常未往外抛,如下代码事务不会回滚
- @Transactional(rollbackFor = { Exception.class })
- public void test() {
- try {
- doDbStuff1();
- doDbStuff2();//假如这个操作数据库的方法会抛出异常,现在方法doDbStuff1()对数据库的操作 不会回滚。
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
如果doDbStuff2()这个操作数据库的方法抛出异常,因为将异常捕获未往外抛,方法doDbStuff1()对数据库的操作不会回滚。
情况三:如果自己需要捕获异常又要返回错误时,可以参考以下做法
- @Transactional(rollbackFor = { Exception.class })
- public void test() {
- try {
- doDbStuff1();
- doDbStuff2();
- } catch (Exception e) {
- e.printStackTrace();
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//就是这一句了,加上之后,如果doDbStuff2()抛了异常, //doDbStuff1()是会回滚的
- return “xxx错误信息”;
- }
- }
阅读全文
0 0
- Spring中抛出异常时,既要要返回错误信息,还要做事务回滚
- spring异常抛出触发事务回滚策略导读
- spring异常抛出触发事务回滚策略导读
- Spring异常抛出触发事务回滚策略
- 异常捕获不抛出,Spring事务无法回滚
- 异常捕获不抛出,Spring事务无法回滚
- 异常捕获不抛出,Spring事务无法回滚【转载】
- 异常捕获不抛出,Spring事务无法回滚
- spring事务不能回滚 异常捕获不抛出
- mysql事务管理及spring声明式事务中主动异常抛出使数据库回滚
- Spring事务异常回滚,捕获异常不抛出就不会回滚
- Spring事务异常回滚,捕获异常不抛出就不会回滚
- Spring事务异常回滚,捕获异常不抛出就不会回滚
- Spring事务异常回滚,捕获异常不抛出就不会回滚
- Spring事务异常回滚,捕获异常不抛出就不会回滚
- Spring事务异常回滚,捕获异常不抛出就不会回滚
- Spring事务异常回滚,捕获异常不抛出就不会回滚
- Spring事务异常回滚,捕获异常不抛出就不会回滚
- C++默认参数函数及函数重载
- Java异常处理
- 数据库隔离级别及其实现原理
- python 爬虫系列02 认识 requests
- Android数据加密之Des加密
- Spring中抛出异常时,既要要返回错误信息,还要做事务回滚
- 欢迎使用CSDN-markdown编辑器
- HTTP报文实例分析
- CSS样式的优势
- 计数排序
- Unity中的混合因子
- C++冒泡排序递归&&非递归版本
- SQL Injection(2)
- 带搜索的下拉框