Я хотел бы использовать
java.util.Optional.orElseThrow()
с типом исключения, который запрашивает параметр конструктора. Что-то вроде этого:
.orElseThrow(MyException::new(someArgument)) // obviously NOT working
Есть ли способ создать поставщика, который передает значение моего аргумента?
orElseThrow(() -> new MyException(someArgument))
?Ответы:
Конечно.
источник
Похоже, что вы можете выбросить только RuntimeException из метода
orElseThrow
. В противном случае вы получите сообщение об ошибке типаMyException cannot be converted to java.lang.RuntimeException
Обновление : - Это была проблема со старой версией JDK. Я не вижу этой проблемы с последними версиями.
источник
Optional
в groovy. Пыталасьthrow Exception
от заводного замыкания, но потерпела неудачуjava.lang.reflect.UndeclaredThrowableException
, изменив его наRuntimeException
фиксированное.Optional.orElseThrow
которой написано, что вы можете бросить,Throwable
что означаетError
или любойException
.источник