自定义错误处理和日志

时间:2011-04-26 14:32:53

标签: c# asp.net syntax error-handling class-design

如您所知,处理错误的基本方法是try ... catch ... finally结构。

如果我们想要处理每个错误并将其保存到文件中,我们必须在catch部分添加一行以保存错误详细信息。

问题是: 是否有任何覆盖捕获事件的解决方案?

换句话说,考虑尝试... catch ... finally结构类似于其他应用程序事件和覆盖catch部分,运行我们的自定义代码下一次运行catch部分代码。

有可能吗?

2 个答案:

答案 0 :(得分:1)

我认为实现这类问题的最佳方法之一是使用面向方面的编程。

事实上,你想要的东西必须:

  • 处理例外情况。
  • 记录例外情况。

有一个名为IL编织的概念,它基于编译后代码注入,简化了面向方面的编程。

你可以在执行方法和属性之前和之后做一些事情,并且在一天结束时,这是“处理任何程序集成员中抛出的任何异常”,不是吗?

例如,我对PostSharp有一些经验,它实现了IL编织,并且使用它非常容易:它是基于属性的。

你需要实现派生某个PostSharp基本属性的自定义属性,并且它可以覆盖在执行放置属性的方法/属性之前和之后调用的某个方法。

异常处理可以实现为“HandleExceptionAttribute”并记录“LogAttribute”(这只是一个例子!)。

了解有关PostSharp的更多信息(如果我没错,它有免费的社区版):

还有一些“操作方法”:

答案 1 :(得分:0)

您可以捕获特定的异常类型

Try
{do something}
catch (SystemException ex) { }
catch (InvalidOperationException ex) { }
catch (Exception ex) { }

这是你的意思吗?

否则您可以实施Exception Handler Class