SpringBoot 2異常処理用try/catchエラーメッセージとスクロールバック(自動スクロール/手動スクロール/部分ロールバック)
1660 ワード
問題の背景
時々、私たちはいつもSpringBoot 2でService方法に対して完全な事務をして、異常を発見した時に、ロールバックして、またエラー情報を返すことができます.
場面一:自動スクロール(直接投げて、try/catchではない)は は
時々、私たちはいつもSpringBoot 2でService方法に対して完全な事務をして、異常を発見した時に、ロールバックして、またエラー情報を返すことができます.
場面一:自動スクロール(直接投げて、try/catchではない)
@Override
@Transactional(rollbackFor = Exception.class)
public Object submitOrder() throws Exception {
success();
// exception , success() 。
exception();
return ApiReturnUtil.success();
}
場面二:手動でロールバック(try/catchを行い、ロールバックして投げ出す)@Override
@Transactional(rollbackFor = Exception.class)
public Object submitOrder (){
success();
try {
exception();
} catch (Exception e) {
e.printStackTrace();
//
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return ApiReturnUtil.error();
}
return ApiReturnUtil.success();
}
追加:ロールバック部分異常Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
を用いてロールバックポイントを設定する.TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
を使用してsavePoint
にロールバックする.@Override
@Transactional(rollbackFor = Exception.class)
public Object submitOrder (){
success();
// ,
Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
try {
exception();
} catch (Exception e) {
e.printStackTrace();
//
TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
return ApiReturnUtil.error();
}
return ApiReturnUtil.success();
}