Lewis D.
—In Java, a NullPointerException
occurs when a variable that is being accessed has not yet been assigned to an object, in other words, the variable is assigned as null
.
If you have read the Sentry answer to Is Java Pass-By-Reference or Pass-By-Value?, you might know that in Java, variables are simply pointers to objects in memory. Therefore, a null pointer exception will occur when the code is pointing to something in memory that does not exist.
The Java API documentation on NullPointerException
lists a couple of scenarios where this exception could be invoked:
null
object.null
object.null
as if it were an array.null
as if it were an array.null
as if it were a Throwable value.Let’s take a look at a concrete example of where a NullPointerException
might be thrown.
Consider the following code example:
class NullPointerExample { private static void printFirstElement(String[] array) { System.out.println(array[0]); } public static void main(String[] args) { String[] myStringArray = null; printFirstElement(myStringArray); } }
Executing this code will result in the following stack trace:
Exception in thread "main" java.lang.NullPointerException at NullPointerExample.printFirstElement(NullPointerExample.java:6) at NullPointerExample.main(NullPointerExample.java:11)
This happens because in our printFirstElement()
method, we attempted to access the first element of an array which does not exist. Similarly, taking the length of this given array would yield the same result. We could make this code null-safe by adding a check for null before attempting to access the first element:
class NullPointerExample { private static void printFirstElement(String[] array) { if (null != array){ System.out.println(array[0]); } else{ System.out.println("The array was null!"); } } public static void main(String[] args) { String[] myStringArray = null; printFirstElement(myStringArray); } }
Executing this code now will yield the following output:
The array was null!
This is one important technique we can use to avoid tumbling into a NullPointerException
during code execution. Some tips for avoiding a NullPointerException
include:
int
, boolean
and char
, as these cannot be assigned as null and therefore cannot cause a NullPointerException
.NullPointerException
issues before you actually execute any of your code.@NotNull
and @Nullable
annotations.Tasty treats for web developers brought to you by Sentry. Get tips and tricks from Wes Bos and Scott Tolinski.
SEE EPISODESConsidered “not bad” by 4 million developers and more than 100,000 organizations worldwide, Sentry provides code-level observability to many of the world’s best-known companies like Disney, Peloton, Cloudflare, Eventbrite, Slack, Supercell, and Rockstar Games. Each month we process billions of exceptions from the most popular products on the internet.
Here’s a quick look at how Sentry handles your personal information (PII).
×We collect PII about people browsing our website, users of the Sentry service, prospective customers, and people who otherwise interact with us.
What if my PII is included in data sent to Sentry by a Sentry customer (e.g., someone using Sentry to monitor their app)? In this case you have to contact the Sentry customer (e.g., the maker of the app). We do not control the data that is sent to us through the Sentry service for the purposes of application monitoring.
Am I included?We may disclose your PII to the following type of recipients:
You may have the following rights related to your PII:
If you have any questions or concerns about your privacy at Sentry, please email us at compliance@sentry.io.
If you are a California resident, see our Supplemental notice.