我想要使用
java.util.Optional.orElseThrow()
使用要求构造函数参数的异常类型。类似于这样:
.orElseThrow(MyException::new(someArgument)) // obviously NOT working
有没有一种方法可以创建一个Supplier,它会将我的参数值传递进去?我想要使用
java.util.Optional.orElseThrow()
使用要求构造函数参数的异常类型。类似于这样:
.orElseThrow(MyException::new(someArgument)) // obviously NOT working
有没有一种方法可以创建一个Supplier,它会将我的参数值传递进去?.orElseThrow(() -> new MyException(someArgument))
看起来你只能从方法 orElseThrow
中抛出 RuntimeException。否则,你将会收到类似于 MyException cannot be converted to java.lang.RuntimeException
的错误消息。
更新:- 这是一个旧版JDK的问题。在最新版本中,我没有看到这个问题。
Optional
时,这让我感到困惑。我试图从Groovy闭包中throw Exception
,但它失败了,并显示了java.lang.reflect.UndeclaredThrowableException
,将其更改为RuntimeException
后问题得到解决。 - Ted NaleidoptionalUsers.orElseThrow(() -> new UsernameNotFoundException("Username not found"));
orElseThrow(() -> new MyException(someArgument))
呢? - Christoffer Hammarström