Вы заметили java.lang.NullPointerException (NPE)? 8 лучших практик, чтобы избежать NPE во время выполнения в Java

Опубликовано: 2020-10-07
Вы заметили java.lang.NullPointerException (NPE)? 8 лучших практик, чтобы избежать NPE во время выполнения в Java

Избегайте исключения Null Pointer Exception в Java и советы и рекомендации по Java, чтобы избежать исключения NullPointerException в Java.

Как разработчик Java, я уверен, что вы, должно быть, столкнулись с исключением Null Pointer Exception (NPE), начиная с 1-го дня. В большинстве случаев исключение NPE показывает четкую трассировку стека, которая указывает на основную причину того же самого, но в случае большого приложения уровня предприятия, в котором у вас есть сотни классов, становится кошмаром выяснить реальную основную причину.

Что такое исключение нулевого указателя (NPE)?

NullPointerException (NPE) — это исключение, возникающее при попытке использовать ссылку, которая не указывает ни на какое место в памяти (пустое), как если бы она ссылалась на объект.

Вызов метода для null ссылки или попытка доступа к полю нулевой ссылки вызовет NPE. Это самая распространенная причина.

Согласно JavaDoc, ниже приведены основные причины NPE:

  • Выбрасывание null , как если бы это было значение Throwable .
  • Вызов метода экземпляра null объекта.
  • Доступ или изменение поля null объекта.
  • Принимая длину null , как если бы это был массив.
  • Доступ или изменение слотов null , как если бы это был массив.

Теперь реальный вопрос: как избежать java.lang.NullPointerException во время выполнения? В этом руководстве мы рассмотрим несколько примеров, которые создают NPE во время выполнения, и шаги, которые нам необходимо выполнить, чтобы решить эту проблему.

Давайте сначала создадим NPE во время выполнения. Взгляните на приведенный ниже пример CrunchifyNullPointerExceptionTips.java

Мы создадим NPE 3 разными способами

  1. NPE будет выброшен, если вы пытаетесь получить доступ к нулевому объекту
  2. NPE будет выброшен, если вы попытаетесь преобразовать нулевую строку
  3. NPE будет выбран, если вы пытаетесь получить доступ к нулевому объекту во время инициализации класса.

Создать класс CrunchifyNullPointerExceptionTips.java

Результат:

Что ж, есть несколько советов и приемов, которые мы могли бы использовать, чтобы избежать исключения NullPointerException во время выполнения. Давайте взглянем.

Подсказка 1:

Eclipse/IntelliJ IDE попытается отобразить NPE в рабочей области. Исправьте свой код только во время разработки.

Подсказка нулевого указателя в Eclipse

Подсказка 2:

Добавьте crunchifyI sNullorEmpty () перед операцией над объектом. Добавьте это в CrunchifyNullPointerExceptionTips.java

В вышеприведенной Java-программе строки 55 и 56 будут заменены этим.

Подсказка 3:

Проверьте, является ли строка null или пустой после операции trim().

Подсказка 4:

Всегда используйте Try Catch block , чтобы предотвратить непрерывный процесс выполнения.

Подсказка 5:

Collections.emptyList() предпочтительнее из-за лучшей обработки дженериков.

Подсказка 6:

Используйте Java Assertions

Утверждение — это утверждение, позволяющее проверить ваши предположения о коде. Например, если вы пишете метод, который возвращает имя в системе, вы можете утверждать, что возвращаемое значение otherName if String равно null.

Основное использование утверждений будет:

Но есть одна загвоздка: утверждение недоступно в рабочей среде, и мы не должны использовать утверждение с какой-либо бизнес-логикой.

Подсказка 7:

Попробуйте использовать проверки containsKey() , containsValue() , contains() .

Подсказка 8:

В заключение всегда рекомендуется заботиться о NPE во время разработки, а не отлаживать во время работы. Существует ряд других советов и приемов, доступных с использованием Spring Framework Annotation, Factory Pattern , Null Object Pattern и т. д. Но сейчас я прерву это.

Опубликую новый учебник, вероятно, через неделю по этому. Следите за обновлениями.

Если вы хотите что-то добавить к этому руководству ИЛИ нашли проблему, пожалуйста, напишите нам и оставьте свои комментарии.