Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvSpOpOT 29 of 322 menu
◀ ▶

Исключение при пустом контейнере в Java

Когда отсутствие значения считают ошибкой, вызывают orElseThrow. На непустом контейнере метод работает как get. На пустом бросает NoSuchElementException или исключение из переданного поставщика.

Вариант без аргумента подходит, если достаточно стандартного сообщения:

import java.util.Optional; Optional<String> role = Optional.of("admin"); System.out.println(role.orElseThrow()); Optional<String> gap = Optional.empty(); // gap.orElseThrow(); // NoSuchElementException

Через лямбду задают свой тип и текст:

import java.util.Optional; Optional<Integer> id = Optional.empty(); int value = id.orElseThrow( () -> new IllegalStateException("id missing") );

Такой прием уместен в конце цепочки, когда пустота уже означает нарушение контракта, а не обычный «не нашли».

Метод int requirePositive(Optional<Integer> n): верните число с IllegalArgumentException и текстом "not a number", если контейнер пуст.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить