如何使用Enterprise Library异常处理块创建自定义异常处理程序

时间:2013-08-30 17:07:36

标签: c# exception enterprise-library handlers

我正在尝试创建与EHAB一起使用的自定义异常处理程序。我所能找到的how-to是IExceptionHandler接口,它只需要HandleException方法。但是,显然还有其他要求,因为我得到了这个例外:

System.InvalidOperationException

   {"The type 'Paychex.IP.Common.TempClassLibrary.TempExceptionHandler, TempClassLibrary,
    Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' for custom exception handler
    with name 'TempExceptionHandler' does not have the expected constructor
    (C:\\Projects\\IP\\Common\\TempTestingConsole\\bin\\Debug\\TempTestingConsole.vshost.exe.Config 
    line 28)."}

如果有“预期的构造函数”,如何查找有关该内容的文档?我应该继承基类和IExceptionHandler接口吗? ('临时......'类只是我的沙箱,用于解决问题,不会是最后的类...)

更多信息:我的“沙盒”异常处理程序类如下:

[ConfigurationElementType(typeof(CustomHandlerData))]
public class TempExceptionHandler : IExceptionHandler
{
    public Exception HandleException(Exception exception, Guid handlingInstanceId)
    {
        string oldMsg = exception.Message;
        string newMsg = "Added by TempExceptionHandler: " + oldMsg;
        ApplicationException newException = new ApplicationException(newMsg);
        return newException;
    }
}

我只想通过在EntLib配置实用程序中查看它来查看“[ConfigurationElementType(typeof(CustomHandlerData))]”属性的要求,当它打开一个对话框来选择自定义处理程序类时(在标题栏的标题栏中)对话框),但我不知道其他要求意味着什么。

1 个答案:

答案 0 :(得分:1)

有关示例,请参阅Creating a Custom Provider。还有Enterprise Library 5.0 - Extensibility Labs遍历各种异常处理方案。

以上内容适用于Enterprise Library 5,但大部分细节仍适用于Enterprise Library 6.一个例外是GetRegistrations覆盖将替换为BuildExceptionHandler覆盖。

NameValueCollection构造函数而言,它与基本设计时集成一起使用。所有XML属性都作为名称值对传递给构造函数,类可以根据需要提取和使用这些值。

Enterprise Library 6现在拥有它自己的Hands-On Labs