Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

Optional.orElseThrow()

Возвращает значение или бросает исключение, если его нет.

Доступно с: Java 10

Синтаксис

T orElseThrow()
<X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) throws X

Параметры

ПараметрТипОписание
exceptionSupplierSupplier<? extends X>Необязательно: создаёт исключение для пустого случая (Java 8).

Возвращаемое значение

TЗначение из `Optional`.

Примеры

Своё исключение с понятным сообщением:

record User(int id, String name) {}
 
User findUser(int id) {
    return Stream.of(new User(1, "Anna"), new User(2, "Oleg"))
        .filter(u -> u.id() == id)
        .findFirst()
        .orElseThrow(() -> new IllegalArgumentException("No user with id " + id));
}
 
void main() {
    IO.println(findUser(2).name());
    try {
        findUser(7);
    } catch (IllegalArgumentException e) {
        IO.println(e.getMessage());
    }
}

Результат:

Oleg
No user with id 7

Примечания

Версия без аргументов (Java 10) бросает NoSuchElementException с сообщением No value present и делает то же, что get(), но с говорящим названием. Используйте её, когда отсутствие значения — ошибка программы.

См. также

  • Optional.orElse() — Возвращает значение или запасной вариант, если значения нет.
  • IllegalArgumentException — Сообщает, что метод получил недопустимый аргумент.
  • Optional.isPresent() — Проверяет, есть ли значение в `Optional`.

В учебнике

  • Optional — Класс Optional в Java: значение, которого может не быть, создание через of и empty, orElse, map, ifPresent и orElseThrow.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.