Chciałbym użyć
java.util.Optional.orElseThrow()
z typem wyjątku, który prosi o parametr konstruktora. Coś takiego:
.orElseThrow(MyException::new(someArgument)) // obviously NOT working
Czy istnieje sposób utworzenia dostawcy, który przekazuje moją wartość argumentu?
java
java-8
java-stream
mdo
źródło
źródło
orElseThrow(() -> new MyException(someArgument))
?Odpowiedzi:
Pewnie.
źródło
Wygląda na to, że z metody można wyrzucić tylko wyjątek RuntimeException
orElseThrow
. W przeciwnym razie pojawi się komunikat o błędzie, taki jakMyException cannot be converted to java.lang.RuntimeException
Aktualizacja : - To był problem ze starszą wersją JDK. Nie widzę tego problemu w najnowszych wersjach.
źródło
Optional
używałem w groovy. Próbowałemthrow Exception
z groovy zamknięcia, ale nie udało sięjava.lang.reflect.UndeclaredThrowableException
, zmieniając naRuntimeException
naprawione.Optional.orElseThrow
której stwierdzono, że możesz rzucićThrowable
co oznacza aError
lub dowolneException
.źródło