3

Exception.Data コレクション内のすべての項目をログに記録するように NLog を拡張しました。そのため、データ アクセス コードで SqlException をキャッチした場合は、いくつかの項目を Exception.Data ディクショナリに追加して、ログを改善します。常にキャッチ内からログを記録したいわけではありませんが、代わりに、例外が発生して後で処理されるようにします。だから私はこのようなものを書きます:

Try
   ...
Catch exception As Exception
   exception.Data.Add("SP", StoreProcedureNameCost)
   exception.Data.Add("Connection", myConnection.ConnectionString)
   Throw
End Try

追加したすべてのデータ項目をまだ持っているのではThrowなく、呼び出すだけですか?Throw exception

4

2 に答える 2

4

はい、Data プロパティに加えられた変更を保持します。との基本的な違いはthrowthrow exスタック トレースは呼び出しthrowでは変更されず、 では変更されることthrow exです。

于 2012-10-19T18:33:30.403 に答える
1

私はそれを自分で試してみましたが、期待どおりに機能します。throw を呼び出すだけで、例外に追加された新しいデータが保持されます。

Try
   Try
      Throw New NotImplementedException("Hi")
   Catch ex As Exception
      ex.Data.Add("Here", "It is there")
      Throw
   End Try
Catch ex As Exception
   Dim msg As String = ex.Data("Here").ToString()
   Response.Write(msg)
End Try

効いて「あるよ」と吐き出しました。

于 2012-10-19T18:33:10.337 に答える