[英]Exception has been thrown by the target of an invocation (MethodBase.Invoke Method)
我想捕获在使用invoke方法调用的方法中抛出的异常。
public void TestMethod()
{
try
{
method.Invoke(commandHandler, new[] { newCommand });
}
catch(Exception e)
{
ExceptionService.SendException(e);
}
}
method.Invoke调用以下方法:
public void Register(/*parameters*/)
{
if(test_condition())
throw new CustomException("Exception Message");
}
问题是当我捕获CustomException时,在TestMethod中,catch语句中的e变量没有类型CustomException。 它有以下消息:“调用目标已抛出异常”。
我想捕获已引发的异常(这是CustomException),并将其传递给ExceptionService机制。
我究竟做错了什么?
是的,你通过反射调用方法。 因此,根据文档 ,如果目标方法抛出异常,将抛出TargetInvocationException
。
只需使用InnerException
属性来获取 - 并可能抛出 - 原始异常。
例如:
try
{
method.Invoke(commandHandler, new[] { newCommand });
}
catch (TargetInvocationException e)
{
ExceptionService.SendException(e.InnerException);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.