【发布时间】:2010-10-06 01:56:22
【问题描述】:
我们正在使用企业库来满足我们应用程序中的所有日志记录和异常处理需求。我们添加了一个电子邮件侦听器,用于将所有捕获的异常通过电子邮件发送给管理员。一个要求是,当方法中发生异常时,我们需要检索方法的参数值(如果有)并将其附加到发送的电子邮件中的异常详细信息中。是否可以不编写自定义记录器?
【问题讨论】:
标签: .net-4.0 enterprise-library
我们正在使用企业库来满足我们应用程序中的所有日志记录和异常处理需求。我们添加了一个电子邮件侦听器,用于将所有捕获的异常通过电子邮件发送给管理员。一个要求是,当方法中发生异常时,我们需要检索方法的参数值(如果有)并将其附加到发送的电子邮件中的异常详细信息中。是否可以不编写自定义记录器?
【问题讨论】:
标签: .net-4.0 enterprise-library
只需创建一个自定义异常,将消息设置为参数:
try {
...
} catch(Exception ex) {
var customException = new CustomException(ex, string.format("Param1 {0}, Param2 {1}", param1, param2));
bool rethrow = ExceptionPolicy.HandleException(customException, PolicyName);
}
验证了实际上 ExceptionFormatter 类确实会遍历所有内部异常,因此您的 CustomException 可以像
public class CustomException : Exception
{
public CustomException(string message, Exception innerException) : base(message, innerException)
{
}
}
【讨论】: