當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring中抛出异常时,既要要返回错误信息,还要做事务回滚
生活随笔
收集整理的這篇文章主要介紹了
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中抛出异常时,既要要返回错误信息,还要做事务回滚的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c程序语言设计练习题,C语言程序设计练习
- 下一篇: gradle idea java ssm