How does throwing an ArgumentNullException help?

Posted by Scott Whitlock on Programmers See other posts from Programmers or by Scott Whitlock
Published on 2011-11-22T17:37:26Z Indexed on 2011/11/22 18:14 UTC
Read the original article Hit count: 328

Filed under:
|

Let's say I have a method:

public void DoSomething(ISomeInterface someObject)
{
    if(someObject == null) throw new ArgumentNullException("someObject");
    someObject.DoThisOrThat();
}

I've been trained to believe that throwing the ArgumentNullException is "correct" but an "Object reference not set to an instance of an object" error means I have a bug.

Why?

I know that if I was caching the reference to someObject and using it later, then it's better to check for nullity when passed in, and fail early. However, if I'm dereferencing it on the next line, why are we supposed to do the check? It's going to throw an exception one way or the other.

Edit:

It just occurred to me... does the fear of the dereferenced null come from a language like C++ that doesn't check for you (i.e. it just tries to execute some method at memory location zero + method offset)?

© Programmers or respective owner

Related posts about c#

Related posts about null