如何使用OnException方面(PostSharp)继续方法流?

时间:2012-05-11 14:14:03

标签: c# visual-studio exception-handling aop postsharp

我有以下代码:

[Serializable]
    class ExceptionAspectHandler:OnExceptionAspect
    {
        public override void OnException(MethodExecutionArgs args)
        {
            Console.WriteLine("{0}", args.Exception);
            args.FlowBehavior = FlowBehavior.Continue;
        }
    }

    [OnExceptionAspect]
    public static void divide()
            {
                int n = Convert.ToInt32(Console.ReadLine());
                var a = 100 / n; //the exception happens here
                Console.WriteLine("it should get here");
            }

使用FlowBehavior.Continue结束divide()并返回main()方法。

2 个答案:

答案 0 :(得分:4)

请记住,OnException方面将您的代码包装在try / catch中,因此代码将从catch(而不是重新抛出)继续,并且它的行为将默认返回。你是否希望它从抛出异常的地方继续?如果是这样,你需要自己在try / catch中明确地包装该行。

请阅读http://www.sharpcrafters.com/blog/post/Day-6-Your-code-after-PostSharp.aspx了解详情。

答案 1 :(得分:0)

divide()方法中使用的属性应该是ExceptionAspectHandler(你已创建),而不是OnExceptionAspect。