はじめまして。まさると申します。
■No1582 (HIRO さん) に返信
> finally の件大変失礼しました。
>
> 以下のように例外をスローさせ、catchで処理をするというのはどうでしょう?
>
> try
> {
> // 省略
>
> if (execCount == 0)
> {
> //catchで受け取れるよう例外をスロー
> throw new Exception("更新件数が0件のため処理を中止します");
> return;
> }
>
> //Commit処理
> trans.Commit();
>
> }
> catch ( Exception ex )
> {
> // ロールバック処理
> trans.RollBack();
> }
これだと例外を握りつぶしてしまっているため、危険な実装ですよ。
明示的に発生させた例外ならば、
try
{
// 処理1
if ( 条件 )
{
throw new ApplicationException("〜");
}
// 処理2
}
catch ( ApplicationException apex )
{
// ロールバック処理
trans.RollBack();
// 想定された例外の処理
MessageBox.Show(apex.Message);
}
catch ( Exception )
{
// ロールバック処理
trans.RollBack();
// 発生した例外をthrow
throw;
}
のようにしたほうが良いのではないでしょうか。
#ただ、明示的にRollBackしなくとも、Commitしていなければ、
#usingステートメントを抜ける際(もしくはDisposeが呼ばれた際)に
#自動的にRollBackされるので、それでよい気がしますが。