2011-09-07 103 views
0

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

回答

2

no。 PostSharp的工作方式是将你的方法封装在自己的try/catch块中,然后重新抛出异常。在你的方法中处理的任何异常都是内部try/catch,而postharp只有外部try/catch块。您将要么1)必须重新抛出异常或2)使用某个方面来处理这些异常。我都不推荐这两种方法。

+0

我以为PostSharp会有某种代码注入的可能性。 – Tomas

+0

@Tomas不像你想的那样。 – ILovePaperTowels

+0

这就是为什么我个人尽量避免编写try catch块。希望你可以重构和集中你的错误处理? –

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) 
     } 
    } 
} 

使用的定制OnMethodBoundaryAspectOnEntry方法,你可以通过调用一个方法,并把在异常记录异常的信息。该方法实际上不需要做任何事情,它只是用于环绕并记录异常参数的模型。