Estamos lançando um sistema e, às vezes, recebemos a famosa exceção NullReferenceException
com a mensagem Object reference not set to an instance of an object
.
No entanto, em um método em que temos quase 20 objetos, ter um log que diz que um objeto é nulo é realmente inútil. É como dizer a você, quando você é o agente de segurança de um seminário, que um homem entre cem participantes é um terrorista. Isso é realmente inútil para você. Você deve obter mais informações, se quiser detectar qual homem é o homem ameaçador.
Da mesma forma, se quisermos remover o bug, precisamos saber qual objeto é nulo.
Agora, algo ficou obcecado por vários meses, e é isso:
Por que o .NET não nos fornece o nome ou, pelo menos, o tipo de referência do objeto, que é nulo? . Não consegue entender o tipo de reflexão ou qualquer outra fonte?
Além disso, quais são as melhores práticas para entender qual objeto é nulo? Devemos sempre testar a nulidade de objetos nesses contextos manualmente e registrar o resultado? Existe uma maneira melhor?
Atualização:
a exceção The system cannot find the file specified
tem a mesma natureza. Você não pode encontrar qual arquivo, até anexar ao processo e depurar. Eu acho que esses tipos de exceções podem se tornar mais inteligentes. Não seria melhor se o .NET nos dissesse em c:\temp.txt doesn't exist.
vez dessa mensagem geral? Como desenvolvedor, voto sim.
new
para criar instâncias de uma classe. Quando essa dica realmente ajuda?