🔥 Optional.
Как обычно обрабатываете отсутствие значения? Проверяете на null, кидаете исключение вручную, пишите if-else?
Optional умеет делать это элегантно.
🟢 Что делает orElseThrow()
Возвращает значение из Optional, если оно есть. Если пусто — кидает исключение. Можно передать свой Supplier для кастомного исключения.
🟢 Пример
Optional<User> userOpt = findUserById(123);
// Вместо:
if (!userOpt.isPresent()) {
throw new UserNotFoundException("User not found");
}
User user = userOpt.get();
// Пишем:
User user = userOpt.orElseThrow(
() -> new UserNotFoundException("User not found")
);
Без параметра кидает NoSuchElementException:
User user = userOpt.orElseThrow(); // Java 10+
🟢 Зачем это нужно
— Компактный код без if-блоков.
— Явная обработка отсутствия значения.
— Чистый, декларативный стиль без boilerplate.
Java библиотека