小编Num*_*ick的帖子

orElse-Branch中的可选项会抛出异常

所以我正在使用Optionals并遇到了一个奇怪的行为.我想知道这是否真的是一个强大的"功能"或什么...奇...

下面是给出的示例:我有一个带有Optional的方法,其中orElse我想评估另一个可选项.如果其他Optional不存在,我将引发IllegalArgumentException:

firstOptionalVar.orElse(secondOptionalVar.orElseThrow(IllegalArgumentException::new));
Run Code Online (Sandbox Code Playgroud)

现在,如果它secondOptionalVar是一个空的Optional,它将引发IllegalArgumentException,即使它firstOptionalVar是Present.这对我来说似乎不对.如果firstOptionalVar不存在,我希望它只会引发IllegalArgumentException .

用java7方法来解决这种行为并不是什么大问题:

firstOptionalVar.isPresent() ? firstOptionalVar.get() : secondOptionalVar.orElseThrow(IllegalArgumentException::new);
Run Code Online (Sandbox Code Playgroud)

有没有其他人以前经历过这种行为?这真的是选项应该表现的方式吗?

java exception-handling optional java-8

6
推荐指数
1
解决办法
4117
查看次数

标签 统计

exception-handling ×1

java ×1

java-8 ×1

optional ×1