Le mer. 4 mars 2020 à 15:09, Gary Gregory <garydgreg...@gmail.com> a écrit : > > IMO, until we are all on Java 14 and benefit from its more detailed NPE > message, we need to call Validate.notNull _with a message_ that says what > variable blew up.
No, we don't *need* to (for the reason stated previously), but you may *want* to. Gilles > > Gary > > On Wed, Mar 4, 2020 at 9:01 AM Gilles Sadowski <gillese...@gmail.com> wrote: > > > Le mer. 4 mars 2020 à 14:19, Gary Gregory <garydgreg...@gmail.com> a > > écrit : > > > > > > On Wed, Mar 4, 2020 at 7:58 AM sebb <seb...@gmail.com> wrote: > > > > > > > On Sat, 29 Feb 2020 at 18:09, Gilles Sadowski <gillese...@gmail.com> > > > > wrote: > > > > > > > > > > Le sam. 29 févr. 2020 à 18:39, Gary Gregory <garydgreg...@gmail.com> > > a > > > > écrit : > > > > > > > > > > > > On Sat, Feb 22, 2020 at 5:25 PM Gary Gregory < > > garydgreg...@gmail.com> > > > > wrote: > > > > > > > > > > > > > I would like to do the same in Lang as with Collections (see > > below.)\ > > > > > > > > > > > > > > We currently perform checks like: > > > > > > > > > > > > > > Validate.isTrue(foo != null, ...) > > > > > > > > > > > > > > Which should be IMO: > > > > > > > > > > > > > > Validate.notNull(foo, ...); > > > > > > > > > > > > > > The difference being that the former throws IAE and the later > > NPE. > > > > > > > > > > > > > > As with [collections], my argument is the same, the JRE uses > > > > > > > Objects.requireNonNull() to throw an NPE, so I'd like to keep > > > > normalizing > > > > > > > on that. > > > > > > > > > > > > > > > > > > > Any thoughts? Should I proceed? > > > > > > > > > > > > > +1 > > > > > > > > > +1 for NPE on unexpected null. > > > > > [But perhaps it is not necessary to double-check, as the JRE > > > > > will do it anyway (and throw NPE).] > > > > > > > > > > This is not about dropping the check, please re-read the thread, > > > specifically: > > > > Please re-read my reply (3 and 4 lines above). > > In line with what Sebb mentions; if the code is akin to > > ---CUT--- > > void doSomethingWith(Object foo) { > > Validate.notNull(foo, ...); // Provably unnecessary because... > > System.out.println("foo=" + foo.toString()); // ... this will throw NPE. > > // ... > > } > > ---CUT--- > > Then the check could be dropped, especially if it would throw > > NPE instead of IAE. > > > > In fact, my impression is that, when we control the chain of calls > > (e.g. when there is no external dependency), there is always a > > point where NPE will be thrown (by the JRE) unless the reference > > is never used; hence the check is not strictly necessary; it will only > > abort the chain earlier, at the cost of doing many checks that are > > not needed in the nominal case (where the reference is not null). > > > > Gilles > > > > > > > > We currently perform checks like: > > > > > > Validate.isTrue(foo != null, ...) > > > > > > Which should be IMO: > > > > > > Validate.notNull(foo, ...); > > > > > > notNull calls the JRE's Objects.requireNonNull() > > > > > > > > > > Depends on how and where the variable is used -- sometimes a null can > > > > cause hard to track errors, not necessarily NPE, and the exception (or > > > > possibly other failure) may be a long way from the initial method > > > > call. > > > > > > > > It's almost always better to report the problem as early as possible. > > > > > > > > I think the existing checks should be kept. > > > > > > > > > > Agreed, but I am talking but performing a better cleaner check by using > > > Validate.notNull(foo, ...) instead of Validate.isTrue(foo != null, ...) > > > > > > Gary > > > > > > > > > > > > > > If it can be proved that the code would generate NPE immediately > > > > anyway, it might be worth dropping the check. > > > > However, code changes, so at least a comment should be left in its > > > > place to note that the code is relying on Java to generate the NPE at > > > > this point. > > > > > > > > > > > > Gilles > > > > > > > > > > > > > > > > > Gary > > > > > > > > > > > > > > > > > > > > > > > > > > Gary > > > > > > > > > > > > > > ---------- Forwarded message --------- > > > > > > > From: Gary Gregory <garydgreg...@gmail.com> > > > > > > > Date: Tue, Dec 10, 2019 at 9:59 AM > > > > > > > Subject: Re: [collection] NPE vs IAE in > > > > > > > org.apache.commons.collections4.CollectionUtils > > > > > > > To: Commons Developers List <dev@commons.apache.org>, Bruno P. > > > > Kinoshita < > > > > > > > brunodepau...@yahoo.com.br> > > > > > > > > > > > > > > > > > > > > > FTR, using requireNonNull is also an 'Effective Java' > > recommendation. > > > > > > > > > > > > > > Gary > > > > > > > > > > > > > > On Thu, Dec 5, 2019 at 4:54 PM Bruno P. Kinoshita > > > > > > > <brunodepau...@yahoo.com.br.invalid> wrote: > > > > > > > > > > > > > >> +1 for NPE > > > > > > >> > > > > > > >> On Friday, 6 December 2019, 5:22:34 am NZDT, Gary Gregory < > > > > > > >> garydgreg...@gmail.com> wrote: > > > > > > >> > > > > > > >> Hi All: > > > > > > >> > > > > > > >> org.apache.commons.collections4.CollectionUtils contains a mix > > of > > > > checking > > > > > > >> for null inputs by throwing NullPointerExceptions in some > > methods > > > > and > > > > > > >> IllegalArgumentExceptions in others. > > > > > > >> > > > > > > >> I propose we standardized to NPE simply because the JRE provides > > > > > > >> Objects.requireNonNull() just for this purpose. > > > > > > >> > > > > > > >> Gary > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > 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