Digamos que eu tenho um método:
public void DoSomething(ISomeInterface someObject)
{
if(someObject == null) throw new ArgumentNullException("someObject");
someObject.DoThisOrThat();
}
Fui treinado para acreditar que jogar o item ArgumentNullExceptioné "correto", mas um erro "Referência de objeto não definida para uma instância de um objeto" significa que tenho um erro.
Por quê?
Sei que, se eu estava armazenando em cache a referência someObjecte usando-a posteriormente, é melhor verificar a nulidade quando transmitida e falhar mais cedo. No entanto, se estou desreferenciando na próxima linha, por que devemos fazer a verificação? Vai lançar uma exceção de uma maneira ou de outra.
Editar :
Apenas me ocorreu ... o medo do nulo não referenciado vem de uma linguagem como C ++ que não verifica você (isto é, apenas tenta executar algum método no local de memória zero + deslocamento do método)?