Я хотел бы предотвратить дальнейшую обработку объекта, если он нулевой.
В следующем коде я проверяю, является ли объект нулевым, либо:
if (!data.Equals(null))
и
if (data != null)
Тем не менее, я получаю NullReferenceException
в dataList.Add(data)
. Если объект был нулевым, он никогда не должен был бы войти в if
-состояние!
Таким образом, я спрашиваю, является ли это правильным способом проверки, является ли объект нулевым:
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;
}
Если это правильный способ проверить, является ли объект нулевым, что я делаю неправильно (как я могу предотвратить дальнейшую обработку объекта, чтобы избежать исключения NullReferenceException)?
!= null
в своих нулевых проверках. .Equals
всегда будет выдавать исключение, если объект нулевой.
throw e;
не намного лучше. throw;
с другой стороны ...
e.ToString()
создаст строку, которая включает в себя не только сообщение об ошибке, но также и все InnerExceptions
и трассировку стека. Так что это вроде очень толстого сообщения об исключении. Если вы (правильно!) Хотите сохранить эту информацию и сохранить ее, используйте просто throw;
.
throw e;
противthrow new Exception(e.ToString());