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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.1591 の関連記事表示

<< 0 >>
■1591  Re[7]: トランザクションの状態の判定
□投稿者/ まさる -(2007/02/28(Wed) 10:21:07)
    2007/02/28(Wed) 10:52:11 編集(投稿者)

    はじめまして。まさると申します。

    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されるので、それでよい気がしますが。
記事No.1535 のレス /過去ログ10より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -