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 someObject
e 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)?