从反射抛出的TargetInvocationException可以有一个空的InnerException吗?
本文关键字:有一个 InnerException 反射 TargetInvocationException | 更新日期: 2023-09-27 18:06:49
在这里浏览System.ComponentModel.DataAnnotations.CustomValidationAttribute
的源代码时,我看到了以下代码(缩短):
try
{
methodInfo.Invoke(null, methodParams);
}
catch (TargetInvocationException ex)
{
if (ex.InnerException != null)
{
throw ex.InnerException
}
throw;
}
这里,代码检查ex.InnerException
是否为空。我不认为一个TargetInvocationException
可以有一个null
InnerException
,如果它是从反射调用抛出的。
这可能吗?如果是,请提供一个InnerException
可以为空的场景。
MSDN声明
创建时,TargetInvocationException被传递给通过反射调用的方法所抛出的异常的引用。InnerException属性保存底层异常。
所以理论上只使用框架反射方法,它不应该是null…从理论上讲:P
当然,如果您显式地从正在调用的方法中抛出它,它可以(并且将会)为null。