日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

Spring中抛出异常时,既要要返回错误信息,还要做事务回滚

發(fā)布時(shí)間:2023/12/10 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring中抛出异常时,既要要返回错误信息,还要做事务回滚 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

情況一:如果沒有在程序中手動(dòng)捕獲異常,如下代碼事務(wù)會(huì)回滾

@Transactional(rollbackFor = { Exception.class }) public void test() throws Exception { doDbStuff1(); doDbStuff2();//假如這個(gè)操作數(shù)據(jù)庫的方法會(huì)拋出異常,方法doDbStuff1()對(duì)數(shù)據(jù)庫的操作會(huì)回滾。 }

 如果doDbStuff2()方法拋出異常,方法doDbStuff1()對(duì)數(shù)據(jù)庫的操作會(huì)回滾。??

?

情況二:如果在程序中自已捕獲異常未往外拋,如下代碼事務(wù)不會(huì)回滾

@Transactional(rollbackFor = { Exception.class }) public void test() { try { doDbStuff1(); doDbStuff2();//假如這個(gè)操作數(shù)據(jù)庫的方法會(huì)拋出異常,現(xiàn)在方法doDbStuff1()對(duì)數(shù)據(jù)庫的操作 不會(huì)回滾。 } catch (Exception e) { e.printStackTrace(); } }

? ? ? ? 如果doDbStuff2()這個(gè)操作數(shù)據(jù)庫的方法拋出異常,因?yàn)閷惓2东@未往外拋,方法doDbStuff1()對(duì)數(shù)據(jù)庫的操作不會(huì)回滾。

?

情況三:如果自己需要捕獲異常又要返回錯(cuò)誤時(shí),可以參考以下做法

@Transactional(rollbackFor = { Exception.class }) public void test() { try { doDbStuff1(); doDbStuff2(); } catch (Exception e) { e.printStackTrace(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//就是這一句了,加上之后,如果doDbStuff2()拋了異常,doDbStuff1()是會(huì)回滾的 return “xxx錯(cuò)誤信息”; } }


原文:https://blog.csdn.net/jarniyy/article/details/79674501

轉(zhuǎn)載于:https://www.cnblogs.com/panchanggui/p/11039069.html

總結(jié)

以上是生活随笔為你收集整理的Spring中抛出异常时,既要要返回错误信息,还要做事务回滚的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。