Может ли исключение 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
может быть нулевым
1 ответ
MSDN утверждает, что
При создании в TargetInvocationException передается ссылка на исключение, созданное методом, вызванным посредством отражения. Свойство InnerException содержит основное исключение.
Так что теоретически, используя только методы отражения каркаса, оно никогда не должно быть нулевым... теоретически:P
Конечно, он может (и будет!) Быть нулевым, если вы явно выбросили его из вызываемого метода.