Необязательно, на самом деле не предназначен для работы с исключениями, он был предназначен для работы с потенциальными нулями без прерывания потока вашей программы.
Вы можете сделать что-то подобное в своем классе обслуживания
optional.orElseThrow(() -> new RuntimeException("ProductNotFoundException"));
, что в основном означает , возвращает мое необязательное значение, но выдает исключение, если оно недоступно