D.R*_*.R. 5 c# delegates exception
我正在使用以下方法调用委托(动态可配置服务):
public void CallService (Delegate service, IContext ctx)
{
var serviceArgs = CreateServiceArguments(service, ctx);
service.DynamicInvoke(serviceArgs);
}
Run Code Online (Sandbox Code Playgroud)
此时,我想捕获在调用的服务方法中发生的所有异常,但是,我不想捕获由于DynamicInvoke调用而发生的任何异常。例如:
service委托抛出DomainException->捕获异常DynamicInvoke()MemberAccessException因为委托是私有方法而抛出->不捕获异常,让它冒泡我希望我的要求很清楚。如何确定捕获的异常是源于DynamicInvoke调用本身还是来自基础委托。
哦,是的,而且:我无法使用异常类型来决定!服务本身也完全有可能引发MemberAccessException,因为它本身可以做一些委派的事情...
小智 5
哦,是的,而且:我无法使用异常类型来决定!服务本身也完全有可能引发MemberAccessException,因为它本身可以做一些委派的事情...
是的,您可以使用异常类型来决定。如文档中所述Delegate.DynamicInvoke,如果所调用的方法引发异常(任何异常),则它将包装在中TargetInvocationException。那是您可以捕获的异常,然后您可以查看其InnerException属性以了解它是否是可以处理的异常。
| 归档时间: |
|
| 查看次数: |
907 次 |
| 最近记录: |