Unity拦截和异常

4
我目前正在处理一个问题,我有很多接口和它们的实现都是用Unity创建的。这些类包含一些经常抛出异常的方法,我希望创建一个动态代理来捕获在方法中发生的所有异常并在其他地方处理它们。
由于我正在使用Unity,我想知道是否可以使用Unity拦截器来实现这样的功能。
例如,创建一个TransparentProxyInterceptor并在调用这些方法时包装一个try-catch块。 这是否可能,或者我走错了方向? 谢谢
1个回答

6

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

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

您的调用处理程序将类似于:

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

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

    return result;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接