Метод orElseThrow
Метод orElseThrow возвращает значение,
содержащееся в объекте Optional, если оно
присутствует. Если же значение отсутствует,
метод выбрасывает исключение. Без параметров
он выбрасывает NoSuchElementException.
В качестве параметра можно передать поставщика
исключения (Supplier), который создаст
нужное исключение.
Синтаксис
optional.orElseThrow()
optional.orElseThrow(exceptionSupplier)
Первый вариант без параметров выбрасывает
NoSuchElementException. Второй вариант
принимает Supplier, который возвращает
исключение для выбрасывания.
Пример
Давайте получим значение из Optional,
которое присутствует:
import java.util.Optional;
public class Main
{
public static void main(String[] args)
{
Optional<String> opt = Optional.of("abcde");
String res = opt.orElseThrow();
System.out.println(res);
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте попробуем получить значение из пустого
Optional. Будет выброшено исключение:
import java.util.Optional;
public class Main
{
public static void main(String[] args)
{
Optional<String> opt = Optional.empty();
try
{
String res = opt.orElseThrow();
System.out.println(res);
}
catch (Exception e)
{
System.out.println("Exception: " + e.getClass().getSimpleName());
}
}
}
Результат выполнения кода:
"Exception: NoSuchElementException"
Пример
Давайте передадим поставщика исключения, чтобы выбросить собственное исключение:
import java.util.Optional;
public class Main
{
public static void main(String[] args)
{
Optional<String> opt = Optional.empty();
try
{
String res = opt.orElseThrow(() -> new IllegalStateException("Value is missing"));
System.out.println(res);
}
catch (Exception e)
{
System.out.println("Exception: " + e.getMessage());
}
}
}
Результат выполнения кода:
"Exception: Value is missing"