Useful message about NullPointerException

Chris Newland cnewland at
Tue Jan 27 12:58:15 UTC 2015


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()
        .getC() // NPE here indicates getB() returned null

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



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:
> on-tp213240p213842.html Sent from the OpenJDK Core Libraries mailing list
> archive at

More information about the core-libs-dev mailing list