Wprowadzamy system i czasami otrzymujemy słynny wyjątek NullReferenceException
z komunikatem Object reference not set to an instance of an object
.
Jednak w metodzie, w której mamy prawie 20 obiektów, posiadanie dziennika, który mówi, że obiekt jest pusty, tak naprawdę w ogóle się nie przydaje. To tak, jakby powiedzieć, kiedy jesteś agentem bezpieczeństwa seminarium, że mężczyzna na 100 uczestników jest terrorystą. To naprawdę nie ma dla ciebie żadnego sensu. Powinieneś uzyskać więcej informacji, jeśli chcesz wykryć, który mężczyzna jest groźny.
Podobnie, jeśli chcemy usunąć błąd, musimy wiedzieć, który obiekt jest pusty.
Teraz coś mnie obsesję na punkcie od kilku miesięcy, a mianowicie:
Dlaczego .NET nie podaje nam nazwy, a przynajmniej rodzaju odwołania do obiektu, które jest puste? . Czy nie może zrozumieć typu z odbicia lub innego źródła?
Jakie są najlepsze praktyki, aby zrozumieć, który obiekt jest pusty? Czy zawsze powinniśmy ręcznie testować zerowanie obiektów w tych kontekstach i rejestrować wynik? Czy jest lepszy sposób?
Aktualizacja:
wyjątek The system cannot find the file specified
ma ten sam charakter. Nie możesz znaleźć pliku, dopóki nie zostanie dołączony do procesu i debugowany. Myślę, że tego rodzaju wyjątki mogą stać się bardziej inteligentne. Czy nie byłoby lepiej, gdyby .NET mógł nam powiedzieć c:\temp.txt doesn't exist.
zamiast tego ogólnego komunikatu? Jako programista głosuję na tak.
new
do tworzenia instancji klasy. Kiedy taka wskazówka naprawdę pomaga?