2011-04-26 84 views
0

正如你所知,处理错误的基本方法是try ... catch ... finally结构。自定义错误handeling和日志

如果我们想要处理每个错误并将其保存到一个文件中,我们必须添加一行来捕获部分以保存错误细节。

现在的问题是: 有覆盖捕获事件的解决方案吗?

换句话说,考虑try ... catch ... finally结构类似于其他应用程序事件并重写catch节,运行我们的自定义代码下一次运行catch节代码。

可能吗?

回答

0

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

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

这是什么意思?

否则,你可以实现一个Exception Handler Class

+0

不是我亲爱的。谢谢您的回答。我想重写catch部分,即使我们写catch(Exception ex){...}代码 – 2011-04-26 15:01:55

1

我相信实施这些类型的问题的最好的方法之一是使用面向方面编程。

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

  • 处理异常。
  • 日志异常。

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

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

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

您需要实现派生一些PostSharp基本类的自定义属性,并且它可以重写将在执行放置您的属性的方法/属性之后调用的某些方法。

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

了解更多关于PostSharp(如果我没看错,它有一个免费的社区版):

而一些 “如何做”:

+0

这很棒。我阅读您的解决方案并查看该链接。但我真的不明白这可以做什么!即使程序员写她/他的catch部分,它是否可以处理所有项目类中的任何错误? – 2011-04-26 16:55:45

+0

就是这样!你可以这样做:) – 2011-04-26 19:28:55