正如你所知,处理错误的基本方法是try ... catch ... finally结构。自定义错误handeling和日志
如果我们想要处理每个错误并将其保存到一个文件中,我们必须添加一行来捕获部分以保存错误细节。
现在的问题是: 有覆盖捕获事件的解决方案吗?
换句话说,考虑try ... catch ... finally结构类似于其他应用程序事件并重写catch节,运行我们的自定义代码下一次运行catch节代码。
可能吗?
正如你所知,处理错误的基本方法是try ... catch ... finally结构。自定义错误handeling和日志
如果我们想要处理每个错误并将其保存到一个文件中,我们必须添加一行来捕获部分以保存错误细节。
现在的问题是: 有覆盖捕获事件的解决方案吗?
换句话说,考虑try ... catch ... finally结构类似于其他应用程序事件并重写catch节,运行我们的自定义代码下一次运行catch节代码。
可能吗?
您可以捕获特定的异常类型
Try
{do something}
catch (SystemException ex) { }
catch (InvalidOperationException ex) { }
catch (Exception ex) { }
这是什么意思?
否则,你可以实现一个Exception Handler Class
我相信实施这些类型的问题的最好的方法之一是使用面向方面编程。
事实上,你想要的东西,必须:
有一个叫做IL编织的概念,它基于后期编译代码注入,它简化了面向方面编程。
这就是你可以在执行方法和属性之前和之后做一些事情,并且在一天结束时,这是“处理在任何组件成员中抛出的任何异常”,不是吗?
例如,我在PostSharp方面有一些经验,它实现了IL编织并使它非常易于使用:它是基于属性的。
您需要实现派生一些PostSharp基本类的自定义属性,并且它可以重写将在执行放置您的属性的方法/属性之后调用的某些方法。
异常处理可以实现为“HandleExceptionAttribute”并记录“LogAttribute”(这只是一个示例!)。
了解更多关于PostSharp(如果我没看错,它有一个免费的社区版):
而一些 “如何做”:
这很棒。我阅读您的解决方案并查看该链接。但我真的不明白这可以做什么!即使程序员写她/他的catch部分,它是否可以处理所有项目类中的任何错误? – 2011-04-26 16:55:45
就是这样!你可以这样做:) – 2011-04-26 19:28:55
不是我亲爱的。谢谢您的回答。我想重写catch部分,即使我们写catch(Exception ex){...}代码 – 2011-04-26 15:01:55