PostSharp句柄处理异常

时间:2011-09-07 06:04:29

标签: exception postsharp

我的应用程序中有许多Try / Catch块可以捕获异常。我想阅读这样处理的异常并将它们记录到文件中。是否可以使用PostSharp读取处理的异常?

2 个答案:

答案 0 :(得分:2)

没有。 PostSharp的工作原理是将方法包装在自己的try / catch块中,然后重新抛出异常。您的方法中处理的任何异常都是内部try / catch,而postsharp只有外部try / catch块。您可以1)必须重新抛出异常或2)使用方面处理这些异常。我建议不要这样做。

答案 1 :(得分:0)

处理此问题(!)的一种方法是在catch中调用一个方法,该方法将记录传递给异常的参数。只需传递异常,记录器就会记录信息。

[LogParameters(LogLevel.Error)]
private static void Error(Exception ex) { }

public class LogParameters : OnMethodBoundaryAspect {
    public override void OnEntry(MethodExcutionArgs args) {
        for (int i=0; i<args.Arguments.Count; i++) {
            // Get argument from args.Arguments.GetArgument(i)
        }
    }
}

使用自定义OnEntry的{​​{1}}方法,您可以通过调用方法并传入异常来记录异常信息。该方法不需要实际做任何事情,它只是一个虚拟的方面环绕并记录异常参数。