Единство перехвата и исключения - PullRequest
4 голосов
/ 18 июня 2009

В настоящее время я имею дело с проблемой, в которой у меня много интерфейсов и их реализаций, созданных с помощью единства. эти классы содержат некоторые методы, которые генерируют исключения на регулярной основе, и я хотел создать динамический прокси вокруг этих классов, чтобы я мог перехватывать все исключения, возникающие в методах, которые обрабатывают их где-то еще.

Поскольку я играю с Unity, мне интересно, можно ли что-то подобное сделать с помощью перехвата Unity.

т.е. создайте TransparentProxyInterceptor и оберните блок try-catch вокруг invocatino этих методов. это вообще возможно или я иду в неправильном направлении? спасибо

1 Ответ

6 голосов
/ 19 июня 2009

Да, перехват Unity (AOP) - отличный способ справиться с обработкой исключений. Вы можете добавить все виды поведения, такие как:

  • запись в файл журнала или журнал событий
  • отправить письмо
  • увеличить счетчик производительности
  • автоматическая повторная попытка при превышении времени ожидания или блокировки
  • сбросить другую ошибку

Ваш обработчик вызовов будет выглядеть примерно так:

public override IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
{
    IMethodReturn result = getNext()(input, getNext);

    if (result.Exception != null)
    {
        // do something
    }

    return result;
}
...