オブジェクトがnullの場合、それ以上処理されないようにしたいと思います。
次のコードで、オブジェクトがnullかどうかを次のいずれかで確認します。
if (!data.Equals(null))
そして
if (data != null)
しかし、私は受信NullReferenceException
時dataList.Add(data)
。オブジェクトがnullの場合、if
-statementに入る必要はありません!
したがって、これがオブジェクトがnullかどうかを確認する適切な方法であるかどうかを尋ねています。
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;
}
これがオブジェクトがnullであるかどうかを確認する適切な方法である場合、何が問題ですか(NullReferenceExceptionを回避するためにオブジェクトでの以降の処理を防ぐにはどうすればよいですか?)
!= null
では、常にnullチェックで使用する必要があります。 .Equals
オブジェクトがnullの場合、常に例外がスローされます。
throw e;
あまり良くありません。throw;
、一方で...
e.ToString()
エラーメッセージだけでなく、すべてのメッセージInnerExceptions
とスタックトレースを含む文字列を生成します。つまり、これは非常に太い例外メッセージのようなものです。(正しく!)この情報を保存し、それがどこにあるかを保持したい場合は、単にを使用しますthrow;
。
throw e;
対throw new Exception(e.ToString());