Мы запускаем систему и иногда получаем известное исключение NullReferenceException
с сообщением Object reference not set to an instance of an object
.
Тем не менее, в методе, где у нас есть почти 20 объектов, наличие журнала, в котором говорится, что объект нулевой, на самом деле вообще бесполезен. Это все равно что сказать вам, когда вы агент безопасности на семинаре, что человек из 100 участников - террорист. Это действительно бесполезно для вас. Вы должны получить больше информации, если вы хотите определить, какой человек является угрожающим человеком.
Аналогичным образом, если мы хотим удалить ошибку, нам нужно знать, какой объект является нулевым.
Теперь, что-то одержимо в моей голове в течение нескольких месяцев, а именно:
Почему .NET не дает нам имя или, по крайней мере, тип ссылки на объект, который является нулевым? , Разве он не может понять тип из отражения или любого другого источника?
Кроме того, каковы лучшие практики, чтобы понять, какой объект является нулевым? Должны ли мы всегда проверять обнуляемость объектов в этих контекстах вручную и регистрировать результат? Есть ли способ лучше?
Обновление:
исключение The system cannot find the file specified
имеет ту же природу. Вы не можете найти какой файл, пока не присоединитесь к процессу и не отладите. Я думаю, что эти типы исключений могут стать более разумными. Разве не было бы лучше, если бы .NET мог сказать нам c:\temp.txt doesn't exist.
вместо этого общего сообщения? Как разработчик, я голосую за.
new
для создания экземпляров класса. Когда такой намек действительно помогает?