捕獲異常,不拋出,事物不能回滾!!!
if(userSave){ try { userDao.save(user); userCapabilityQuotaDao.save(capabilityQuota); } catch (Exception e) { logger.info("能力開通接口,開戶異常,異常信息:"+e); } }2.捕獲異常,拋出運(yùn)行時(shí)異常,回滾。當(dāng)一個(gè)方法出錯(cuò),另一個(gè)方法必然回滾
if(userSave){ try { userDao.save(user); userCapabilityQuotaDao.save(capabilityQuota); } catch (Exception e) { logger.info("能力開通接口,開戶異常,異常信息:"+e); throw new RuntimeException(); } }3.捕獲異常,手動(dòng)回滾
if(userSave){ try { userDao.save(user); userCapabilityQuotaDao.save(capabilityQuota); } catch (Exception e) { logger.info("能力開通接口,開戶異常,異常信息:"+e); TransactionaspectSupport.currentTransactionStatus().setRollbackOnly(); } }例如service層處理事務(wù),那么service中的方法中不做異常捕獲,或者在catch語句中最后增加throw new RuntimeException()語句,以便讓aop捕獲異常再去回滾,并且在service上層(webservice客戶端,view層action)要繼續(xù)捕獲這個(gè)異常并處理
在service層方法的catch語句中增加:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();語句,手動(dòng)回滾,這樣上層就無需去處理異常
來源: https://my.oschina.net/manmao/blog/593886新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注