我目前正在处理一个问题,我有很多 iterfaces 和它们的实现都是统一创建的。这些类包含一些定期抛出异常的方法,我想围绕这些类创建一个动态代理,这样我就可以捕获在其他地方处理它们的方法中发生的所有异常。
当我在玩 Unity 时,我想知道是否可以使用 Unity Interception 来完成这样的事情。
即创建一个 TransparentProxyInterceptor 并在这些方法的调用周围包装一个 try-catch block 。 这完全有可能还是我走错了方向? 谢谢
最佳答案
是的,Unity拦截(AOP)是处理异常处理的绝佳方式。您可以添加各种行为,例如:
- 写入日志文件或事件日志
- 发送电子邮件
- 增加性能计数器
- 超时或锁定异常时自动重试
- 重新抛出一个不同的错误
您的调用处理程序将类似于:
public override IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
{
IMethodReturn result = getNext()(input, getNext);
if (result.Exception != null)
{
// do something
}
return result;
}
关于c# - Unity 拦截和异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1012348/