當(dāng)前位置:
首頁(yè) >
前端技术
> javascript
>内容正文
javascript
Spring中抛出异常时,既要要返回错误信息,还要做事务回滚
生活随笔
收集整理的這篇文章主要介紹了
Spring中抛出异常时,既要要返回错误信息,还要做事务回滚
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
情況一:如果沒(méi)有在程序中手動(dòng)捕獲異常,如下代碼事務(wù)會(huì)回滾
@Transactional(rollbackFor = { Exception.class }) public void test() throws Exception { doDbStuff1(); doDbStuff2();//假如這個(gè)操作數(shù)據(jù)庫(kù)的方法會(huì)拋出異常,方法doDbStuff1()對(duì)數(shù)據(jù)庫(kù)的操作會(huì)回滾。 }如果doDbStuff2()方法拋出異常,方法doDbStuff1()對(duì)數(shù)據(jù)庫(kù)的操作會(huì)回滾。??
?
情況二:如果在程序中自已捕獲異常未往外拋,如下代碼事務(wù)不會(huì)回滾
@Transactional(rollbackFor = { Exception.class }) public void test() { try { doDbStuff1(); doDbStuff2();//假如這個(gè)操作數(shù)據(jù)庫(kù)的方法會(huì)拋出異常,現(xiàn)在方法doDbStuff1()對(duì)數(shù)據(jù)庫(kù)的操作 不會(huì)回滾。 } catch (Exception e) { e.printStackTrace(); } }? ? ? ? 如果doDbStuff2()這個(gè)操作數(shù)據(jù)庫(kù)的方法拋出異常,因?yàn)閷惓2东@未往外拋,方法doDbStuff1()對(duì)數(shù)據(jù)庫(kù)的操作不會(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èn)題。
- 上一篇: c程序语言设计练习题,C语言程序设计练习
- 下一篇: c语言构造数据类型有,《c语言程序设计基