You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by "Sean C. Sullivan" <se...@seansullivan.com> on 2002/02/10 22:46:51 UTC

[httpclient] parameter validation, NullPointerException vs IllegalArgumentException

From: "dIon Gillard" <di...@multitask.com.au>
>
> Sean C. Sullivan wrote:
>
> >NameValuePair.java
> >
> >--------------------------
> >
> >    /**
> >     * Constructor.
> >     */
> >    public NameValuePair(String name, String value) {
> >
> >        this.name = name;
> >        this.value = value;
> >
> >    }
> >
> >--------------------------
> >
> >With this constructor, it is allowable for a caller to do this:
> >
> >    NameValuePair nvp = new NameValuePair(null, null);
> >
> >I would prefer if the NameValuePair constructor did not allow null
parameters.
> >
> >I prefer this constructor:
> >
> >    /**
> >     * Constructor.
> >     */
> >    public NameValuePair(String name, String value) {
> >
> >        if (null == name) {
> >            throw new NullPointerException("name parameter is null");
> >        }
> >        if (null == value) {
> >            throw new NullPointerException("value parameter is null");
> >        }
> >
> >        this.name = name;
> >        this.value = value;
> >
> >    }
> >
> >
> Again,
>
> my call would be if these are illegal arguments, it should throw
> IllegalArgumentException, not NullPointerException.


In the core Java packages (java.*), Sun throws a NullPointerException
when a null parameter is unexpectedly detected:

Example:  java/io/File.java

////////////////////
    public File(String pathname) {
                 if (pathname == null) {
                         throw new NullPointerException();
                 }
           /// .... etc .....
    }

//////////

Also, Josh Bloch recommends throwing a NullPointerException
when a parameter is unexpectedly null ( "Item 23: Check Parameters for
Validity", [1], pages 120-121 ).

-Sean


[1] Effective Java Programming Language Guide by Josh Bloch
             http://www.amazon.com/exec/obidos/ASIN/0201310058/



--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>