Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
7 профессий по цене одной
07:05:47:06
дн. ч. мин. сек.
10 Июл 2023
2 мин
237

Обработка отсутствующих значений в Java: исключения или null?

Существует типичная ситуация, когда метод в Java должен возвращать объект, но при определенных обстоятельствах этот объект может быть не найден. Например,

Существует типичная ситуация, когда метод в Java должен возвращать объект, но при определенных обстоятельствах этот объект может быть не найден. Например, можно представить метод, который ищет пользователя в базе данных по его идентификатору. Если пользователь с таким идентификатором существует, то метод возвращает его. Но что делать, если такого пользователя нет?

Существуют различные подходы к обработке таких ситуаций. Рассмотрим два основных из них.

Возвращение null

Первый подход заключается в том, чтобы возвращать null, если объект не найден. Это простой и понятный подход. Однако, он может привести к ошибкам. Если разработчик, использующий этот метод, забудет проверить возвращаемое значение на null, это может привести к NullPointerException.

User user = findUserById(id);
System.out.println(user.getName()); // Если findUserById вернул null, здесь будет исключение

Бросание исключения

Второй подход заключается в бросании исключения, когда объект не найден. Это может быть любое исключение, но часто используется NoSuchElementException. Этот подход позволяет явно указать, что объект не найден, и заставляет разработчиков обрабатывать эту ситуацию.

User user;
try {
    user = findUserById(id);
} catch (NoSuchElementException e) {
    System.out.println("User not found");
    return;
}
System.out.println(user.getName()); // Если дошли до этой строки, значит, пользователь найден

Какой подход выбрать?

Выбор между этими двуми подходами зависит от конкретной ситуации. Если отсутствие объекта — это нормальная ситуация, то можно возвращать null. Например, если метод ищет пользователя по имени, и такого пользователя может и не быть.

Если же отсутствие объекта — это неожиданная или некорректная ситуация, то лучше бросать исключение. Например, если метод ищет пользователя по идентификатору, и такой пользователь обязательно должен существовать.

В любом случае, важно явно указать в документации к методу, что он может возвращать null или бросать исключение, и в каких случаях это происходит. Это поможет другим разработчикам правильно использовать этот метод и избежать ошибок.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий