294

我想用

java.util.Optional.orElseThrow()

具有要求构造函数参数的异常类型。像这样的东西:

.orElseThrow(MyException::new(someArgument)) // obviously NOT working

有没有办法创建一个传递我的参数值的供应商?

4

3 回答 3

578

当然。

.orElseThrow(() -> new MyException(someArgument))
于 2014-04-07T15:50:29.520 回答
26

看来您只能从方法中抛出 RuntimeException orElseThrow。否则,您将收到一条错误消息,例如 MyException cannot be converted to java.lang.RuntimeException

更新:- 这是旧版本 JDK 的问题。我在最新版本中没有看到这个问题。

于 2015-02-11T09:03:41.443 回答
11
optionalUsers.orElseThrow(() -> new UsernameNotFoundException("Username not found"));
于 2017-06-27T13:17:25.140 回答