public void Rollback(DbConn aDbConn) { //トランザクションを取り消す try { aDbConn.RollbackImp(); } catch (Exception ex) { //ROLLBACKに失敗した場合は再度ROLLBACKを行い、 //それが成功した場合は正常な処理に復帰する try { aDbConn.RollbackImp(); } catch (Exception ex2) { //Error1状態に遷移して例外を再送出する aDbConn.GoToError1AndThrow(ex2, true); } } //次の状態に遷移する aDbConn.GoToNextState(Rollbacked.GetInstance()); }