Использование Unity 2.0 для обработки исключений - PullRequest
2 голосов
/ 12 апреля 2011

Когда я использую Unity 2.0 для обработки исключений, у меня возникает некоторая проблема, как показано ниже:

public class TraceBehavior : IInterceptionBehavior
{
    public IEnumerable<Type> GetRequiredInterfaces()
    {
        return Type.EmptyTypes;
    }

    public IMethodReturn Invoke(IMethodInvocation input, GetNextInterceptionBehaviorDelegate getNext)
    {
        Console.WriteLine(string.Format("Invoke method:{0}",input.MethodBase.ToString()));
        IMethodReturn result = getNext()(input, getNext);
        if (result.Exception == null)
        {
            Console.WriteLine("Invoke successful!");
        }
        else 
        {
            Console.WriteLine(string.Format("Invoke faild, error: {0}", result.Exception.Message));
            result.Exception = null;
        }
        return result;
    }

    public bool WillExecute { get { return true; } }
}

Я установил result.Exception = null (это означает, что я разрешил исключение и не должен вызывать его снова.)
Однако для меня это исключение.

1 Ответ

3 голосов
/ 12 апреля 2011

Это не так, как это работает.Не устанавливайте result.Exception, вместо этого возвращайте input.CreateMethodReturn (newReturnValues).

...