Java tostring null exception

Reasons and Solutions of Null Pointer Exception in Java

In this article, we will learn about null pointer exceptions in Java and look into some of the common errors that result in them. We will also see how we can prevent them from happening.

What is a Null Pointer Exception in Java?

The Null Pointer Exception is a runtime exception in Java. It is also called the unchecked exception as it escapes during compile-time but is thrown during runtime. A program throws this exception when it attempts to dereference an object that has a null reference.

Simply put, the null pointer exception is raised when we try to call a method or variable that has a null reference.

Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.toUpperCase()" because "example.word" is null at example.main(example.java:4)

From the above code, we see that when we call the String variable word to change to the upper case, we get a null pointer exception as word has a null reference.

Reasons for Null Pointer Exceptions

Some of the common mistakes that we may commit are:

// Invoking methods of a null object class example1 < void add()< int x = 4, y = 6; System.out.println(x+y); >public static void main(String args[]) < example1 obj = null; obj.add(); >>
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "example1.add()" because "" is null at example1.main(example1.java:9)
// Using or altering fields of a null object class example2 < int x = 10; public static void main(String args[])< example2 obj = null; int i = obj.x; // Accessing the field of a null object obj.x = 20; // Modifying the field of a null object >>
Exception in thread "main" java.lang.NullPointerException: Cannot read field "x" because "" is null at example2.main(example2.java:6)
// Calling length of a null array import java.util.*; class example3 < public static void main(String args[])< Scanner sc = new Scanner(System.in); int arr[] = null; System.out.println(arr.length); >>
Exception in thread "main" java.lang.NullPointerException: Cannot read the array length because "" is null at example3.main(example3.java:7)
// Using or altering the items of a null array class example4 < public static void main(String args[])< int arr[] = null; arr[2]=arr[3]+2; >>
Exception in thread "main" java.lang.NullPointerException: Cannot load from int array because "" is null at example4.main(example4.java:7)
// Throwing null value instead of a valid object class example5 < public static void main(String args[])< throw null; >>
Exception in thread "main" java.lang.NullPointerException: Cannot throw exception because "null" is null at example5.main(example5.java:4)

Avoiding Null Pointer Exceptions

Let’s discuss some situations where we can carry out some steps to prevent null pointer exceptions. Of course, we must take care of all the above-mentioned reasons.

Читайте также:  Php class datetime to string

    Inspect the arguments passed to a method
    Sometimes, we may pass variables with null values to a method that results in a null pointer exception during runtime. It is always a better practice to check the arguments before proceeding to use them in the method.
    Let’s look at an example,

class example_1< static int add(String s)< try< System.out.println(s.concat("HI")); >catch(NullPointerException e) < System.out.println("null value found"); >return 6; > public static void main(String args[]) < String word = null; System.out.println(add(word)); >>
Using valueOf(): null Using toString(): Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.toString()" because "" is null at example_4.main(example_4.java:6)

I hope this article has helped you understand the null pointer exceptions in Java.

Источник

Null and toString()

send pies

posted 11 years ago

  • Report post to moderator
  • Hi all,
    I want to ask about the following code snippet

    My question is ,in the first case,toString() is invoked implicitly on null,and it compiled and ran just fine,but then what is wrong with second line.

    Bartender

    Chrome

    send pies

    posted 11 years ago

  • Report post to moderator
  • toString() is only called implicitly if the object passed isn’t null. If it is, the literal «null» is printed instead.

    Bartender

    send pies

    posted 11 years ago

    • 1
  • Report post to moderator
  • Sudhanshu Mishra wrote: Hi all,
    I want to ask about the following code snippet

    My question is ,in the first case,toString() is invoked implicitly on null,

    No, it’s not. Somewhere down in one of the methods that println() calls, there’s code that’s something like

    but then what is wrong with second line.

    You’re dereferencing a null pointer.

    Источник

    Что такое NullPointerException и как это исправить

    Довольно часто при разработке на Java программисты сталкиваются с NullPointerException, появляющимся в самых неожиданных местах. В этой статье мы разберёмся, как это исправить и как стараться избегать появления NPE в будущем.

    NullPointerException – что это такое?

    NullPointerException (оно же NPE) это исключение, которое выбрасывается каждый раз, когда вы обращаетесь к методу или полю объекта по ссылке, которая равна null. Разберём простой пример:

    Integer n1 = null; System.out.println(n1.toString());

    Здесь на первой строке мы объявили переменную типа Integer и присвоили ей значение null (то есть переменная не указывает ни на какой существующий объект).
    На второй строке мы обращаемся к методу toString переменной n1. Так как переменная равна null, метод не может выполниться (переменная не указывает ни на какой реальный объект), генерируется исключение NullPointerException:

    Exception in thread "main" java.lang.NullPointerException at ru.javalessons.errors.NPEExample.main(NPEExample.java:6)

    Как исправить NullPointerException

    В нашем простейшем примере мы можем исправить NPE, присвоив переменной n1 какой-либо объект (то есть не null):

    Integer n1 = 16; System.out.println(n1.toString());

    Теперь не будет исключения при доступе к методу toString и наша программа отработает корректно.

    Если ваша программа упала из-за исключение NullPointerException (или вы перехватили его где-либо), вам нужно определить по стектрейсу, какая строка исходного кода стала причиной появления этого исключения. Иногда причина локализуется и исправляется очень быстро, в нетривиальных случаях вам нужно определять, где ранее по коду присваивается значение null.

    Иногда вам требуется использовать отладку и пошагово проходить программу, чтобы определить источник NPE.

    Как избегать исключения NullPointerException

    Существует множество техник и инструментов для того, чтобы избегать появления NullPointerException. Рассмотрим наиболее популярные из них.

    Проверяйте на null все объекты, которые создаются не вами

    Если объект создаётся не вами, иногда его стоит проверять на null, чтобы избегать ситуаций с NullPinterException. Здесь главное определить для себя рамки, в которых объект считается «корректным» и ещё «некорректным» (то есть невалидированным).

    Не верьте входящим данным

    Если вы получаете на вход данные из чужого источника (ответ из какого-то внешнего сервиса, чтение из файла, ввод данных пользователем), не верьте этим данным. Этот принцип применяется более широко, чем просто выявление ошибок NPE, но выявлять NPE на этом этапе можно и нужно. Проверяйте объекты на null. В более широком смысле проверяйте данные на корректность, и консистентность.

    Возвращайте существующие объекты, а не null

    Если вы создаёте метод, который возвращает коллекцию объектов – не возвращайте null, возвращайте пустую коллекцию. Если вы возвращаете один объект – иногда удобно пользоваться классом Optional (появился в Java 8).

    Заключение

    В этой статье мы рассказали, как исправлять ситуации с NullPointerException и как эффективно предотвращать такие ситуации при разработке программ.

    Источник

    Оцените статью