Me gustaria usar
java.util.Optional.orElseThrow()
con un tipo de excepción que solicita un parámetro constructor. Algo como esto:
.orElseThrow(MyException::new(someArgument)) // obviously NOT working
¿Hay alguna manera de crear un Proveedor que pase el valor de mi argumento?
java
java-8
java-stream
mdo
fuente
fuente
orElseThrow(() -> new MyException(someArgument))
?Respuestas:
Por supuesto.
fuente
Parece que solo puede lanzar RuntimeException del método
orElseThrow
. De lo contrario, recibirá un mensaje de error comoMyException cannot be converted to java.lang.RuntimeException
Actualización : - Este era un problema con una versión anterior de JDK. No veo este problema con las últimas versiones.
fuente
Optional
en groovy. Intentandothrow Exception
desde un cierre maravilloso, pero fallójava.lang.reflect.UndeclaredThrowableException
, cambiando a unRuntimeException
fijo.Optional.orElseThrow
cual dice que puede lanzar unThrowable
que significa unoError
o cualquieraException
.fuente