Ich möchte die weitere Verarbeitung eines Objekts verhindern, wenn es null ist.
Im folgenden Code überprüfe ich, ob das Objekt entweder null ist:
if (!data.Equals(null))
und
if (data != null)
Ich erhalte jedoch eine NullReferenceException
at dataList.Add(data)
. Wenn das Objekt null war, hätte es niemals die if
Anweisung eingeben dürfen!
Daher frage ich, ob dies die richtige Methode ist, um zu überprüfen, ob ein Objekt null ist:
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;
}
Wenn dies die richtige Methode ist, um zu überprüfen, ob das Objekt null ist, was mache ich falsch (wie kann ich die weitere Verarbeitung des Objekts verhindern, um die NullReferenceException zu vermeiden)?
!= null
in Ihren Nullprüfungen verwenden. .Equals
löst immer eine Ausnahme aus, wenn das Objekt null ist.
throw e;
ist nicht viel besser. throw;
, auf der anderen Seite ...
e.ToString()
eine Zeichenfolge, die nicht nur die Fehlermeldung, sondern auch die aller InnerExceptions
und die Stapelverfolgung enthält. Das ist also eine sehr fettreiche Ausnahmemeldung. Wenn Sie (zu Recht!) Diese Informationen aufbewahren und dort aufbewahren möchten, wo sie hingehören, verwenden Sie sie einfach throw;
.
throw e;
versusthrow new Exception(e.ToString());