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 NullReferenceExceptionat dataList.Add(data). Wenn das Objekt null war, hätte es niemals die ifAnweisung 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)?
!= nullin Ihren Nullprüfungen verwenden. .Equalslö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 InnerExceptionsund 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());