从反射抛出的TargetInvocationException可以有一个空的InnerException吗?



在这里浏览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。

相关内容

  • 没有找到相关文章

最新更新