使用Unity 2.0处理异常

时间:2011-04-12 06:37:39

标签: unity-container aop

当我使用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 个答案:

答案 0 :(得分:3)

这不是它的工作原理。不要设置result.Exception,而是返回input.CreateMethodReturn(newReturnValues)。