2009-06-18 80 views
4

我目前正在处理一个问题,我有很多iterfaces和它们的实现都是用unity创建的。这些类包含一些在常规基础上抛出异常的方法,我想创建一个围绕这些类的动态代理,这样我就可以捕获在方法中发生的所有异常,并将它们处理到别的地方。统一拦截和例外

因为我在玩Unity,所以不知道是否可以使用Unity Interception来完成这样的事情。

即创建TransparentProxyInterceptor并围绕这些方法的invocatino包装一个try-catch块。这是可能的吗?或者我会进入错误的方向? 谢谢

回答

6

是的,Unity拦截(AOP)是处理异常处理的好方法。您可以添加各种行为,如:

  • 写入日志文件或事件日志
  • 发送电子邮件
  • 增量性能计数器
  • 自动对超时或锁定异常重试
  • 重新抛出不同的错误

您的来电处理程序将看起来像:

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

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

    return result; 
}