0

エンタープライズ ライブラリ 4.1 の IExceptionHandler を実装する必要があります。私の特定のケースでは、それを使用して例外を Fogbugz に記録したいのですが、内部の詳細は私が求めているものではありません。私が必要とするのは、方法 - ベスト プラクティス - 実装、app.config または web.config の構成を取得する方法です。等

私はこれまでのところコードを持っています:

   public class LcpFogbugzExceptionHandler : IExceptionHandler {
   /// <summary>
   /// Initializes a new instance of the <see cref="LcpFogbugzExceptionHandler"/> class.
   /// </summary>
   public LcpFogbugzExceptionHandler() {
        // <param name="ignore">The ignore.</param>
        //NameValueCollection ignore
    }

    /// <summary>
    /// Initializes a new instance of the <see cref="T:LcpFogbugzExceptionHandler"/> class.
    /// </summary>
    /// <param name="ignore">The ignore.</param>
   public LcpFogbugzExceptionHandler(NameValueCollection ignore) {
   }

    /// <summary>
    /// Handles the exception.
    /// </summary>
    /// <param name="exception">The exception.</param>
    /// <param name="handlingInstanceId">The handling instance id.</param>
    /// <returns></returns>
   [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1300:SpecifyMessageBoxOptions"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Convert.ToBoolean(System.String)")]
    public Exception HandleException(Exception exception, Guid handlingInstanceId) {
        // Perform processing here. The exception returned will be passed to the next
        // exception handler in the chain. 

        return exception;
    }

}
4

1 に答える 1

2

ベスト プラクティスとはどういう意味かわかりません。コード スケルトンが正しいので、それを実装で埋めてください。役に立つかもしれないランダムポイント:

ConfigurationManager通常の方法(など)で構成設定を読み取ることができます。ハンドラーはExceptionPolicy.HandleException、最初に呼び出したのと同じプロセスとスレッドで実行されています。

複数のスレッドで例外を処理する必要がある場合に備えて、ハンドラー コードをスレッド セーフにすることをお勧めします (このプロジェクトで処理しない場合は、次のプロジェクトで必要になる可能性があります)。

非静的インスタンス データを呼び出し元コードからハンドラに渡したい場合は、処理中Dataの例外のディクショナリを設定できます。これは、ハンドラ チェーン全体を通じてそのまま保持され、再度呼び出し元コードに渡されます。この手法を使用して、ハンドラーにデータを送信し、ハンドラーからデータを取得し、1 つのハンドラーがチェーン内の次のハンドラーのアクションを制御できるようにしました。これを行う場合は、すべてのData値がシリアライズ可能であることを確認してください。

于 2009-06-26T12:00:58.743 に答える