【问题标题】:Enterprise Library How to Implement a IExceptionHandler?企业库如何实现一个IExceptionHandler?
【发布时间】:2009-05-04 19:40:41
【问题描述】:

我必须为 Enteprise Library 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;
    }

}

【问题讨论】:

    标签: .net exception-handling fogbugz enterprise-library


    【解决方案1】:

    我不确定您所说的最佳实践是什么意思 - 您的代码框架是正确的,所以只需用您的实现来填充它。可能有用的随机点:

    您可以以正常方式读取配置设置(ConfigurationManager 等)。您的处理程序在最初调用 ExceptionPolicy.HandleException 的同一进程和线程中运行。

    最好让处理程序代码线程安全,以防您必须在多个线程中处理异常(如果您不在这个项目中,您可能需要在下一个项目中)。

    如果您想将任何非静态实例数据从调用代码传递到处理程序,您可以填充正在处理的异常的 Data 字典,该字典将通过整个处理程序链原封不动地保存到再次调用代码。我已经使用这种技术将数据发送到处理程序,从处理程序中取回数据,并允许一个处理程序控制链中下一个处理程序的操作。如果这样做,请确保所有 Data 值都是可序列化的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-13
      • 1970-01-01
      • 2012-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多