Saya ingin menggunakannya
java.util.Optional.orElseThrow()
dengan tipe pengecualian yang meminta parameter konstruktor. Sesuatu seperti ini:
.orElseThrow(MyException::new(someArgument)) // obviously NOT working
Apakah ada cara untuk membuat Pemasok yang memasukkan nilai argumen saya?
java
java-8
java-stream
mdo
sumber
sumber
orElseThrow(() -> new MyException(someArgument))
?Jawaban:
Tentu.
sumber
Tampaknya Anda hanya dapat melempar RuntimeException dari metode
orElseThrow
. Kalau tidak, Anda akan mendapatkan pesan kesalahan sepertiMyException cannot be converted to java.lang.RuntimeException
Pembaruan : - Ini adalah masalah dengan versi JDK yang lebih lama. Saya tidak melihat masalah ini dengan versi terbaru.
sumber
Optional
di groovy. Mencobathrow Exception
dari penutupan asyik, tetapi gagal denganjava.lang.reflect.UndeclaredThrowableException
, mengubahnya menjadiRuntimeException
tetap itu.Optional.orElseThrow
yang mengatakan Anda bisa melemparThrowable
yang berartiError
atau apa sajaException
.sumber