Ich würde gerne verwenden
java.util.Optional.orElseThrow()
mit einem Ausnahmetyp, der nach einem Konstruktorparameter fragt. Etwas wie das:
.orElseThrow(MyException::new(someArgument)) // obviously NOT working
Gibt es eine Möglichkeit, einen Lieferanten zu erstellen, der meinen Argumentwert übergibt?
java
java-8
java-stream
mdo
quelle
quelle
orElseThrow(() -> new MyException(someArgument))
?Antworten:
Sicher.
quelle
Es scheint, dass Sie nur RuntimeException von der Methode auslösen können
orElseThrow
. Andernfalls erhalten Sie eine Fehlermeldung wieMyException cannot be converted to java.lang.RuntimeException
Update : - Dies war ein Problem mit einer älteren Version von JDK. Ich sehe dieses Problem bei den neuesten Versionen nicht.
quelle
Optional
in groovy benutze . Der Versuch,throw Exception
von einem groovigen Verschluss zu kommen, aber es schlug fehljava.lang.reflect.UndeclaredThrowableException
und wechselte zu einemRuntimeException
festen.Optional.orElseThrow
die angegeben ist, dass Sie ein werfen können,Throwable
was einError
oder ein beliebiges bedeutetException
.quelle