日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

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

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

情況一:如果沒有在程序中手動捕獲異常,如下代碼事務會回滾

@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錯誤信息”; } }


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

轉載于:https://www.cnblogs.com/panchanggui/p/11039069.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。