Я столкнулся с довольно странной маленькой проблемой.
В следующем коде я не могу понять, как e
может быть null
;
try
{
//Some Code here
}
catch (Exception e)
{
//Here e is null
}
Насколько я знаю, throw null
будет преобразовано в throw new NullReferenceException()
.
Проблема, похоже, связана с многопоточностью, поскольку удаление другого потока также, похоже, исправляет ее. Или, по крайней мере, я видел это только тогда, когда приведенный выше код запускается в новом потоке. Вся программа использует много потоков и немного сложна.
В любом случае, мой вопрос, как e
может быть нулевым? - Надеюсь, ответ на этот вопрос поможет найти источник этой проблемы.
Редактировать
Я обнаружил его, поскольку он вызвал исключение NullReferenceException в операторе catch, и с помощью отладчика я вижу то же самое.
Редактировать 2
Откройте VisualStudio на следующий день, повторите попытку, код не изменяется, и теперь та же самая ключевая фраза «вызывается», но на этот раз она не равна нулю. Похоже, это был сбой VS.