如果一个对象为空,我希望阻止进一步的处理。
在下面的代码中,我通过以下方式检查对象是否为空:
if (!data.Equals(null))
并且
if (data != null)
然而,在
dataList.Add(data)
处我收到了一个 NullReferenceException
。如果对象为空,它甚至不应该进入 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)?
throw e;
而不是throw new Exception(e.ToString());
。 - Nix!= null
。如果对象为空,.Equals
将始终引发异常。 - Kyle Traubermanthrow e;
没有太大的改善作用。另一方面,throw;
... - Jone.ToString()
会生成一个包含错误消息、所有InnerExceptions
及堆栈跟踪的字符串,因此这是一个非常沉重的异常消息。如果您(正确地!)想要保留此信息,并且将其放在它应该的位置上,请使用简单地throw;
。 - Jon