メソッドがあるとしましょう:
public void DoSomething(ISomeInterface someObject)
{
if(someObject == null) throw new ArgumentNullException("someObject");
someObject.DoThisOrThat();
}
を投げることArgumentNullException
は「正しい」と信じるように訓練されていますが、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」エラーはバグがあることを意味します。
どうして?
参照をキャッシュsomeObject
して後で使用する場合は、渡されたときに無効性をチェックし、早期に失敗する方が良いことを知っています。ただし、次の行でそれを間接参照している場合、なぜチェックを行うことになっていますか?何らかの方法で例外をスローします。
編集:
それはちょうど私に起こりました...逆参照されたnullの恐怖は、あなたをチェックしないC ++のような言語に由来しますか?