我的应用程序中有许多Try / Catch块可以捕获异常。我想阅读这样处理的异常并将它们记录到文件中。是否可以使用PostSharp读取处理的异常?
答案 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}}方法,您可以通过调用方法并传入异常来记录异常信息。该方法不需要实际做任何事情,它只是一个虚拟的方面环绕并记录异常参数。