Ответ 1
Конечно. orElseThrow(() -> new MyException(someArgument))
.
Я хотел бы использовать
java.util.Optional.orElseThrow()
с типом Exception, который запрашивает параметр конструктора. Что-то вроде этого:
orElseThrow(MyException::new(someArgument)) // obviously NOT working
Есть ли способ создать поставщика, который передает значение моего аргумента в?
Конечно. orElseThrow(() -> new MyException(someArgument))
.
Похоже, что вы можете выбросить только RuntimeException из метода orElseThrow
. В противном случае вы получите сообщение об ошибке, например MyException cannot be converted to java.lang.RuntimeException
Обновление: - Это была проблема со старой версией JDK. Я не вижу этой проблемы с последними версиями.
optionalUsers.orElseThrow(() -> new UsernameNotFoundException("Username not found"));