On Fri, Aug 30, 2013 at 10:30 AM, sebb <seb...@gmail.com> wrote: > On 30 August 2013 15:19, Benedikt Ritter <brit...@apache.org> wrote: > > 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. > > > > ... and with a helpful message. > > > I personally thing that NPE should be reserved for signaling that some > code > > tried to invoke a method on a null reference. > > +1 > > > 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. > > s/IllegalStateException /IllegalArgumentException/ > > +1 > > > 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. > > I don't think we have to do the same as LANG, so long as the Javadoc is > clear. > > > Feel free to change it. I'll leave it for now since there doesn't seem to > > be consensus?! > > Unless there are other reasons than "LANG happens to use NPE" I think > we should stick with IAE, as it more clearly indicates the the problem > is not within the method throwing it. > > The problem with using NPE to flag parameter errors is that it > confuses the user as to the likely cause. > > Leave NPEs to the runtime system. >
I agree with all of Sebb's +1 and arguments. Gary > > > 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 > > --------------------------------------------------------------------- > 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