Powiedzmy, że mam metodę:
public void DoSomething(ISomeInterface someObject)
{
if(someObject == null) throw new ArgumentNullException("someObject");
someObject.DoThisOrThat();
}
Nauczono mnie wierzyć, że rzucanie ArgumentNullException
jest „poprawne”, ale błąd „Odwołanie do obiektu nie jest ustawione na wystąpienie obiektu” oznacza, że mam błąd.
Czemu?
Wiem, że jeśli buforowałem odwołanie do niego someObject
i korzystałem z niego później, lepiej sprawdzić, czy jest nieważny, gdy został przekazany, i zakończyć się wcześnie. Jeśli jednak odsyłam to do następnej linii, dlaczego powinniśmy to sprawdzić? W ten czy inny sposób wygeneruje wyjątek.
Edytuj :
Właśnie przyszło mi do głowy ... czy strach przed wyzerowanym zeriem pochodzi z języka takiego jak C ++, który cię nie sprawdza (tj. Po prostu próbuje wykonać jakąś metodę w miejscu zero pamięci + przesunięcie metody)?