QA@IT

VB.NET+ODP.NETでFillメソッド呼び出し直後の例外がうまく捕捉されない

2652 PV
  • 開発機

Windows7 Professional
VB.NET2010 Professional
ODP.NET (11.2.0.3.0)
Oracle Developer Tools for VisualStudio

  • DBサーバー

Windows Server 2008 R2
Oracle Database 11.2.0.3.0(x64)
Oracle Client 11.2.0.3.0(x86)

下記のようなプログラムで、デバッグ有りで開始します。
TableAdapterのFillメソッドを呼び出す直前の
エラー1の箇所でスローされた例外はApp_UnhandledExceptionで捕捉されますが、
エラー1をコメントアウトしたうえでエラー2の箇所でスローされた例外は
App_ThreadException、App_Unhandled
のどちらにも捕捉されず、ブレークポイントを置いても何故かブレークしません。

挙動が異常終了しているように見えましたので、
イベントログに何か記録されているかと思いましたが何も記録されていませんでした。
ロジック中のFillメソッド自体は正常に通過しており、エラー2をThrowする行にブレークポイントを置くと正常にブレークします。

何か環境の構成に問題があるのか、根本的に誤ったコードの記述をしているのでしょうか?
また、同じような現象でお悩みになった方などいらっしゃいませんでしょうか?

    Public Shared Sub Main(ByVal CmdArgs() As String)

        AddHandler Application.ThreadException, AddressOf App_ThreadException
        AddHandler Thread.GetDomain().UnhandledException, AddressOf App_Unhandled

        Using scope As New TransactionScope(TransactionScopeOption.Required, New TimeSpan(0, 5, 0))
            Using ta0010 As New M0010TableAdapters.M0010TableAdapter
                Using ds0010 As New M0010

                    Throw new Exception("エラー1") ・・・捕捉される
                    ta0010.Fill(ds0010._M0010, 12345)
                    Throw new Exception("エラー2") ・・・捕捉されない

                End Using
            End Using
            scope.Complete()
        End Using
    End Sub

    Private Shared Sub App_ThreadException(ByVal sender As Object, ByVal tex As ThreadExceptionEventArgs)
        MessageBox.Show("エラー")
    End Sub

    Private Shared Sub App_Unhandled(ByVal sender As Object, ByVal unex As UnhandledExceptionEventArgs)
        MessageBox.Show("エラー")
    End Sub

回答

回答がつかないようなのでMSDNフォーラムへ移動いたします。
これにてクローズとさせていただきます。
お騒がせしました。

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。