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. > 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