Скажімо, у мене є метод:
public void DoSomething(ISomeInterface someObject)
{
if(someObject == null) throw new ArgumentNullException("someObject");
someObject.DoThisOrThat();
}
Мене навчили вважати, що кидання ArgumentNullException
"правильне", але помилка "Посилання на об'єкт не встановлено на екземпляр об'єкта" означає, що у мене є помилка.
Чому?
Я знаю, що якщо я кешував посилання на нього someObject
та використовував його пізніше, то краще перевірити наявність недійсності при передачі та невдачі достроково. Однак, якщо я перекреслюю це в наступному рядку, чому ми повинні робити перевірку? Виключення буде кинути так чи інакше.
Редагувати :
Мені просто прийшло в голову ... чи походить страх перед занепокоєнням нуля з такою мовою, як C ++, яка не перевіряє вас (тобто вона просто намагається виконати якийсь метод у місці пам'яті zero + method offset)?