Je voudrais utiliser
java.util.Optional.orElseThrow()
avec un type Exception qui demande un paramètre constructeur. Quelque chose comme ça:
.orElseThrow(MyException::new(someArgument)) // obviously NOT working
Existe-t-il un moyen de créer un fournisseur qui transmet la valeur de mon argument?
orElseThrow(() -> new MyException(someArgument))
?Réponses:
Sûr.
la source
Il semble que vous ne pouvez lever que RuntimeException à partir de la méthode
orElseThrow
. Sinon, vous obtiendrez un message d'erreur commeMyException cannot be converted to java.lang.RuntimeException
Mise à jour : - C'était un problème avec une ancienne version de JDK. Je ne vois pas ce problème avec les dernières versions.
la source
Optional
en groovy. Essayer àthrow Exception
partir d'une fermeture groovy, mais il a échoué avecjava.lang.reflect.UndeclaredThrowableException
, le changeant en unRuntimeException
fixe.Optional.orElseThrow
laquelle dit que vous pouvez lancer unThrowable
qui signifie unError
ou n'importe quelException
.la source