PostSharp обрабатывает исключения - PullRequest
0 голосов
/ 07 сентября 2011

В моем приложении много блоков Try / Catch для отлова исключений. Я хотел бы прочитать такие обработанные исключения и записать их в файл. Можно ли читать обработанные исключения с PostSharp?

Ответы [ 2 ]

2 голосов
/ 07 сентября 2011

нет.PostSharp работает, оборачивая ваши методы в собственные блоки try / catch, а затем просто перебрасывая исключение.Любые исключения, обрабатываемые в вашем методе, будут внутренними try / catch, в то время как postsharp будет иметь только внешние блоки try / catch.Вы должны либо 1) сбросить исключение, либо 2) обработать эти исключения, используя аспект.Ни один из которых я не рекомендую.

0 голосов
/ 12 июня 2013

Один из способов справиться с этим (!) - это вызвать метод, который вы вызываете в 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 настраиваемый метод OnMethodBoundaryAspect, вы можете записать информацию об исключении, вызвав метод и передав исключение.,Метод на самом деле ничего не должен делать, он просто пустышка для аспекта, который нужно обернуть и зарегистрировать параметр исключения.

...