代码之家  ›  专栏  ›  技术社区  ›  Joachim Kerschbaumer

单位截获与异常

  •  4
  • Joachim Kerschbaumer  · 技术社区  · 15 年前

    我目前正在处理一个问题,我有很多接口和它们的实现都是用Unity创建的。这些类包含一些在常规基础上抛出异常的方法,我希望围绕这些类创建一个动态代理,以便捕获方法中发生的所有异常,并在其他地方处理它们。

    当我在玩Unity时,我想知道这样的事情是否可以通过Unity拦截来完成。

    也就是说,创建一个transparentProxyInterceptor并围绕这些方法的调用包装一个try-catch块。 这有可能吗?还是我走错了方向? 谢谢

    1 回复  |  直到 15 年前
        1
  •  6
  •   Mike Valenty    15 年前

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

    • 写入日志文件或事件日志
    • 发送电子邮件
    • 递增性能计数器
    • 超时或锁定异常时自动重试
    • 重新显示其他错误

    您的调用处理程序将如下所示:

    public override IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
    {
        IMethodReturn result = getNext()(input, getNext);
    
        if (result.Exception != null)
        {
            // do something
        }
    
        return result;
    }