如您所知,处理错误的基本方法是try ... catch ... finally结构。
如果我们想要处理每个错误并将其保存到文件中,我们必须在catch部分添加一行以保存错误详细信息。
问题是: 是否有任何覆盖捕获事件的解决方案?
换句话说,考虑尝试... catch ... finally结构类似于其他应用程序事件和覆盖catch部分,运行我们的自定义代码下一次运行catch部分代码。
有可能吗?
答案 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