Hi,

If the contract for a method allows a null return you should really handle
it defensively. Null checks are cheap in terms of performance.

If you *have* to chain method calls like that then you could drop each
call onto a new source line and the stack trace will show you which call
was on the null object:

public class NullTest
{
    class B {
        private String c = null;
        public String getC() { return c; }
    }

    class A {
        private B b = null;
        public B getB() { return b; }
    }

    public NullTest() {
        new A()
        .getB()
        .getC() // NPE here indicates getB() returned null
        .length();
    }

    public static void main(String[] args) {
        new NullTest();
    }
}

Regards,

Chris
@chriswhocodes

On Tue, January 27, 2015 11:47, pike wrote:
> Bernd Eckenfels-4 wrote
>
>> Am Wed, 21 Jan 2015 05:45:08 -0700 (MST)
>> schrieb pike <
>
>> pike630@
>
>> >:
>>
>>
>>> We frequently see NullPointerException in our logs. It's really a big
>>>  headache when we see a NullPointerException and it is encapsulated
>>> in another exception as we don't know which object is null and it is
>>> throwing an Exception. Is there any way we can get to know the object
>>>  type or the object variable name where the object is null and it is
>>> throwing a NullPointerException? i.e, instead of just saying there is
>>>  a NullPointerException, can we add some friendly message?
>>
>> Note that if you keep the stack information in an exception it points
>> (most of the time) exactly to the location where the null access
>> happens.
>>
>> I can imagine it is rather hard for the VM to add more informations.
>> Your best bet is to avoid the NPEs and log the exceptions properly.
>>
>>
>> Gruss
>> Bernd
>>
>
> This is acually not helpful in some situations. For example, as what
> kedar has mentioned, if there is a call "a.getB().getC()" and a NPE  is
> thrown. There might be two situations:
> 1. a is null;
> 2. a.getB() is null
>
>
> So it would be better if there can be one friendly message which
> indicates what is null.
>
>
>
> --
> View this message in context:
> http://openjdk.5641.n7.nabble.com/Useful-message-about-NullPointerExcepti
> on-tp213240p213842.html Sent from the OpenJDK Core Libraries mailing list
> archive at Nabble.com.
>


Reply via email to