C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 10 を表示中)
■1577 / )  Re[3]: トランザクションの状態の判定
□投稿者/ HIRO (5回)-(2007/02/27(Tue) 18:07:14)
HIRO さんの Web サイト
No1572 (緑茶庵 さん) に返信
> catch を使用しなかったのは例外発生時以外に
> 意図的に終了する場合があるためでした。

 これはどのようなときを意味するのでしょうか?

> ただ、この処理のようにCommitを行う前にreturnを行った場合でも
> DBConnectionのお陰なのか、実際にDBへの更新は行われませんでした。

 Comnmitをしていないのですから更新されないのは当然だと思います。
 でなければTransactionの意味がないですよね?


> finallyでロールバック処理を書いたのは
> 保険の意味あいがとても強く、Commitしていない処理は
> とにかく全てロールバック処理を行いたかったからです。
>
> *return の前にロールバックを書いても良いかも知れませんが
>  書き忘れもあるのでやりたくありません

 return で処理を抜けるのであればfinalyには到達しませんよね?
 であれば、その前にロールバック処理をするべきではないでしょうか?

returnで処理を抜けない場合は、つまりexecCountが0より大きい場合はCommitされるときですよね?
 この場合は例外が発生しなければロールバックの必要が無いので、保険でfinallyにロールバック処理を入れる必要は内容に思えます。
(例外の発生を考えるとcatchは必要だと思います)

返信 編集キー/


管理者用

- Child Tree -