如何使用OnException方面(PostSharp)继续方法流
本文关键字:继续 方法 PostSharp 何使用 OnException 方面 | 更新日期: 2023-09-27 18:33:49
我有以下代码:
[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() 方法。
请记住,OnException 方面将您的代码包装在 try/catch 中,因此代码将从 catch 继续(而不是重新抛出),并且它的行为将默认返回。您是否希望它从引发异常的地方继续?如果是这样,您需要在尝试/捕获自己中显式包装该行。
请阅读 http://www.sharpcrafters.com/blog/post/Day-6-Your-code-after-PostSharp.aspx 了解更多详情。
divide() 方法中使用的属性应该是 ExceptionAspectHandler(你已经创建),而不是 OnExceptionAspect。