Je voudrais empêcher tout traitement supplémentaire sur un objet s'il est nul.
Dans le code suivant, je vérifie si l'objet est nul soit:
if (!data.Equals(null))
et
if (data != null)
Cependant, je reçois un NullReferenceException
at dataList.Add(data)
. Si l'objet était nul, il n'aurait même jamais dû entrer dans la if
déclaration-!
Ainsi, je demande si c'est une bonne façon de vérifier si un objet est nul:
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;
}
Si c'est la bonne façon de vérifier si l'objet est nul, que fais-je de mal (comment puis-je empêcher un traitement supplémentaire sur l'objet pour éviter la NullReferenceException)?
!= null
dans vos vérifications nulles. .Equals
générera toujours une exception si l'objet est nul.
throw e;
n'est pas beaucoup mieux. throw;
, d'autre part ...
e.ToString()
produira une chaîne qui inclut non seulement le message d'erreur, mais aussi ceux de tous InnerExceptions
et la trace de la pile. C'est donc une sorte de message d'exception très lourd. Si vous souhaitez (à juste titre!) Conserver ces informations et les conserver à leur place, utilisez-les simplement throw;
.
throw e;
versusthrow new Exception(e.ToString());