Класс NullPointerException
Класс NullPointerException - это исключение,
которое возникает при попытке обратиться к объекту
по ссылке, равной null. Оно наследуется
от класса RuntimeException и относится
к непроверяемым исключениям, поэтому компилятор
не требует его обработки. Исключение выбрасывается,
когда мы вызываем метод у null, читаем
или записываем поле у null, берем длину
массива null, обращаемся к элементу
массива null, а также в ряде других
случаев. Параметров у этого класса нет - это
готовый тип исключения, объект которого можно
создать и выбросить через throw.
Синтаксис
new NullPointerException()
new NullPointerException(String message)
Пример
Давайте вызовем метод у ссылки, равной null,
и посмотрим, что произойдет:
public class Main
{
public static void main(String[] args)
{
String str = null;
System.out.println(str.length());
}
}
Результат выполнения кода:
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.length()" because "str" is null
Пример
Давайте обратимся к элементу массива, который равен null:
public class Main
{
public static void main(String[] args)
{
int[] arr = null;
System.out.println(arr[0]);
}
}
Результат выполнения кода:
Exception in thread "main" java.lang.NullPointerException: Cannot load from int array because "arr" is null
Пример
Давайте перехватим исключение NullPointerException
и выведем его сообщение:
public class Main
{
public static void main(String[] args)
{
try {
String str = null;
System.out.println(str.length());
} catch (NullPointerException e) {
System.out.println(e.getMessage());
}
}
}
Результат выполнения кода:
"Cannot invoke \"String.length()\" because \"str\" is null"
Пример
Давайте явно выбросим исключение NullPointerException
с помощью ключевого слова throw:
public class Main
{
public static void main(String[] args)
{
String str = null;
if (str == null) {
throw new NullPointerException("str must not be null");
}
}
}
Результат выполнения кода:
Exception in thread "main" java.lang.NullPointerException: str must not be null
Пример
Давайте проверим ссылку на null
с помощью метода requireNonNull класса Objects:
import java.util.Objects;
public class Main
{
public static void main(String[] args)
{
String str = null;
Objects.requireNonNull(str, "str must not be null");
}
}
Результат выполнения кода:
Exception in thread "main" java.lang.NullPointerException: str must not be null
Смотрите также
-
класс
RuntimeException,
от которого наследуется NullPointerException -
метод
getMessage,
который возвращает сообщение исключения -
метод
printStackTrace,
который выводит стек вызовов исключения -
метод
requireNonNull,
который проверяет ссылку на null