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