I've removed the generics in r1518974, thanks for spotting that sebb.

Regarding the exception to throw I'm indifferent. The important thing is to
fail early.

I personally thing that NPE should be reserved for signaling that some code
tried to invoke a method on a null reference.
In our case null is illegal because we know that some code later on would
break if we accept a null reference. So IllegalStateException makes sense.
Imaging having a method that accepts an int and only positive ints are
valid. You would throw an IllegalArgumentException if a negative int is
passed to that method and not a NegativeIntegerException (or what ever).
But James has a point. If [LANG] uses NPE maybe we should stick to this.

Feel free to change it. I'll leave it for now since there doesn't seem to
be consensus?!

Benedikt


2013/8/30 James Carman <ja...@carmanconsulting.com>

> Well, the problem with using NPE is that we as Java developers have
> learned through the years that NPE typically is an "oh crap"
> situation, where something is terribly wrong (we hate seeing those).
> Thus, our users may have knee-jerk reactions and not even know to
> inspect the message for the real cause.  IAE is less alarming, IMHO.
> Just my $0.02, but we've been doing it that way for a long time in
> [lang], so be it.
>
>
> On Fri, Aug 30, 2013 at 9:01 AM, sebb <seb...@gmail.com> wrote:
> > AFAIK "accidental" NPEs don't have a message associated with them.
> >
> > So provided that the assertion generates the NPE with a suitable
> > message (e.g.as currently done for the IAE) then it *should* be
> > possible for the end user to distinguish the two cases.
> >
> > I am slightly in favour of retaining IAE as the cause is obvious with
> > needing to look at the NPE message.
> >
> > ==
> >
> > Horrible hack: - if you want to use NPE, you could wrap an IAE in the
> NPE:
> >
> > npe = new NPE(msg);
> > npe.initCause(new IAE(msg));
> > throw npe;
> >
> > Or vice-vera, of course!
> >
> > Not sure that gains anything, but it does make the stack trace look
> > more impressive!
> >
> > On 30 August 2013 13:42, James Carman <ja...@carmanconsulting.com>
> wrote:
> >> Commons Lang's Validate.notNull() throws NPEs.  I don't know that I've
> >> necessarily agreed with that, but at some point a decision was made
> >> that null constraint violations should throw NPEs.  Food for thought.
> >>
> >> On Fri, Aug 30, 2013 at 8:32 AM, Gary Gregory <garydgreg...@gmail.com>
> wrote:
> >>> On Fri, Aug 30, 2013 at 8:25 AM, Emmanuel Bourg <ebo...@apache.org>
> wrote:
> >>>
> >>>>
> >>>> >> +        if (parameter == null) {
> >>>> >> +            throw new IllegalArgumentException("Parameter '" +
> >>>> parameterName + "' must not be null!");
> >>>> >> +        }
> >>>> >> +    }
> >>>> >> +}
> >>>>
> >>>> Isn't a null value supposed to throw a NPE ?
> >>>>
> >>>
> >>> Not always IMO. When I see an NPE I assume something is very wrong and
> that
> >>> it could be a bug in the impl OR a call site, somewhere on the code
> path.
> >>>
> >>> With an IAE, I know for sure it's a problem in the call site (which
> could
> >>> be a bug of course).
> >>>
> >>> I does not help that the JRE/JDK is inconsistent, so it's hard to find
> >>> examples.
> >>>
> >>> Gary
> >>>
> >>>
> >>>> Emmanuel Bourg
> >>>>
> >>>>
> >>>> ---------------------------------------------------------------------
> >>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> >>>> For additional commands, e-mail: dev-h...@commons.apache.org
> >>>>
> >>>>
> >>>
> >>>
> >>> --
> >>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
> >>> Java Persistence with Hibernate, Second Edition<
> http://www.manning.com/bauer3/>
> >>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
> >>> Spring Batch in Action <http://www.manning.com/templier/>
> >>> Blog: http://garygregory.wordpress.com
> >>> Home: http://garygregory.com/
> >>> Tweet! http://twitter.com/GaryGregory
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> >> For additional commands, e-mail: dev-h...@commons.apache.org
> >>
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> > For additional commands, e-mail: dev-h...@commons.apache.org
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
>
>


-- 
http://people.apache.org/~britter/
http://www.systemoutprintln.de/
http://twitter.com/BenediktRitter
http://github.com/britter

Reply via email to