| ■1577 / ) |
Re[3]: トランザクションの状態の判定 |
□投稿者/ HIRO (5回)-(2007/02/27(Tue) 18:07:14)
|
■No1572 (緑茶庵 さん) に返信 > catch を使用しなかったのは例外発生時以外に > 意図的に終了する場合があるためでした。
これはどのようなときを意味するのでしょうか?
> ただ、この処理のようにCommitを行う前にreturnを行った場合でも > DBConnectionのお陰なのか、実際にDBへの更新は行われませんでした。
Comnmitをしていないのですから更新されないのは当然だと思います。 でなければTransactionの意味がないですよね?
> finallyでロールバック処理を書いたのは > 保険の意味あいがとても強く、Commitしていない処理は > とにかく全てロールバック処理を行いたかったからです。 > > *return の前にロールバックを書いても良いかも知れませんが > 書き忘れもあるのでやりたくありません
return で処理を抜けるのであればfinalyには到達しませんよね? であれば、その前にロールバック処理をするべきではないでしょうか?
returnで処理を抜けない場合は、つまりexecCountが0より大きい場合はCommitされるときですよね? この場合は例外が発生しなければロールバックの必要が無いので、保険でfinallyにロールバック処理を入れる必要は内容に思えます。 (例外の発生を考えるとcatchは必要だと思います)
|
|