Java - NullPointerException



A NullPointerException in Java occurs when an application tries to use an object reference that is null. This exception is a type of RuntimeException and does not need to be declared in a method's throws clause.

This exception is a checked exception, meaning it must be either handled using a try-catch block or declared with the throws keyword.

Reasons for NullPointerException

Following are the reasons when JVM throws a NullPointerException in Java:

  • Attempting to Access a Field That Doesn't Exist
  • a. If a program tries to retrieve a field using getField() or getDeclaredField() but the specified field is not present in the class, a NoSuchFieldException occurs.
  • Using getField() for Non-Public Fields
  • a. The getField() method can only access public fields. If the field is private or protected, it results in an exception.
  • Incorrect Field Name
  • a. A simple spelling mistake in the field name will cause a NoSuchFieldException.
  • Accessing Fields of a Dynamically Loaded Class
  • a. If a class is loaded at runtime but does not contain the expected field, reflection fails.

Constructors of NullPointerException

There are two constructors of NullPointerException class:

  • NullPointerException(): This constructor is used to create a NullPointerException object without any message.
  • NullPointerException(String message): This constructor is used to create a NullPointerException object with a message.

Methods of NullPointerException

There are some methods of NullPointerException class:

Method Description
getMessage() It is used to return the message of the exception.
toString() It is used to return the detail message string of the exception.
printStackTrace() It is used to print the stack trace of the exception.

Hierarchy of NullPointerException

Given below is the class hierarchy of NullPointerException:

java.lang.Object
 └── java.lang.Throwable
      └── java.lang.Exception
           └── java.lang.ReflectiveOperationException
                └── java.lang.NoSuchFieldException

Example of NullPointerException

In this example, we are creating an object reference that is null, so JVM will throw a NullPointerException.

public class NullPointerExceptionExample {
   public static void main(String[] args) {
      String str = null;
      System.out.println(str.length());
   }
}

Output

Following is the output of the above code:

Exception in thread "main" java.lang.NullPointerException
   at NullPointerExceptionExample.main(NullPointerExceptionExample.java:4)

As you can see in the output, JVM throws a NullPointerException because we are trying to access the length of a null object.

Handling NullPointerException

In this example, we are creating an object reference that is null, so JVM will throw a NullPointerException. We are handling this exception using a try-catch block.

public class NullPointerExceptionExample {
   public static void main(String[] args) {
      try {
         String str = null;
         System.out.println(str.length());
      } catch (NullPointerException e) {
         System.out.println("Object reference is null");
      }
   }
}

Output

Following is the output of the above code:

Object reference is null

How to avoid NullPointerException?

Following are the ways to avoid a NullPointerException:

  • Use getDeclaredField() instead of getField() for private fields.
  • Verify field existence before accessing it.
  • Handle exceptions gracefully using try-catch.
  • Ensure correct field names in dynamic field access.
  • Write unit tests for reflection-related code.
  • Use static typing where possible instead of reflection.

Summary

NoSuchFieldException is a reflection-related error in Java that occurs when attempting to access non-existent fields. By following best practices and handling exceptions properly, developers can avoid runtime failures and build robust Java applications.

java_lang_exceptions.htm
Advertisements