Eu gostaria de impedir um processamento adicional em um objeto se ele for nulo.
No código a seguir, verifico se o objeto é nulo por:
if (!data.Equals(null))
e
if (data != null)
No entanto, recebo um NullReferenceException
em dataList.Add(data)
. Se o objeto fosse nulo, ele nunca deveria ter inserido a if
instrução-!
Portanto, estou perguntando se essa é a maneira correta de verificar se um objeto é nulo:
public List<Object> dataList;
public bool AddData(ref Object data)
bool success = false;
try
{
// I've also used "if (data != null)" which hasn't worked either
if (!data.Equals(null))
{
//NullReferenceException occurs here ...
dataList.Add(data);
success = doOtherStuff(data);
}
}
catch (Exception e)
{
throw new Exception(e.ToString());
}
return success;
}
Se esta é a maneira correta de verificar se o objeto é nulo, o que estou fazendo de errado (como posso impedir um processamento adicional no objeto para evitar a NullReferenceException)?
!= null
em suas verificações nulas. .Equals
sempre lançará uma exceção se o objeto for nulo.
throw e;
não é muito melhor. throw;
, por outro lado ...
e.ToString()
produzirá uma string que inclui não apenas a mensagem de erro, mas também as de todos InnerExceptions
e o rastreamento da pilha. Então essa é uma mensagem de exceção muito pesada. Se você (com razão!) Deseja preservar essas informações e manter onde elas pertencem, use simplesmente throw;
.
throw e;
versusthrow new Exception(e.ToString());