首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从Java8中的orElseThrow方法抛出异常?

如何从Java8中的orElseThrow方法抛出异常?
EN

Stack Overflow用户
提问于 2021-12-09 12:02:11
回答 2查看 2.5K关注 0票数 -3

我有一个名为isExist的字段,它在第1行中为false或true。基于此,在line#2中,执行Optional.empty()或执行Optional.of(1),但从line#2中的orElseThrow方法中不会抛出异常。

谁能解释一下什么时候会抛出异常?在何种情况下将引发异常?

代码语言:javascript
运行
复制
line#1 final boolean isExist  = (user != null && CollectionUtils.isNotEmpty(user.getIds())
                && user.getIds().contains(id));

line#2 (isExist ? Optional.empty() : Optional.of(1)).orElseThrow(
                () -> new Exception());
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-09 12:32:30

在line1中,它将把true/false赋值给isExist变量。

我们这里有两种可能性。

代码语言:javascript
运行
复制
isExist = true or isExist = false;

在第2行,三级条件可以理解为:

代码语言:javascript
运行
复制
Optional optional = null;
if(isExist){
   optional = Optional.empty();
}else{
   optional = Optional.of(1)
}
optional.orElseThrow(() -> new Exception());

orElseThrow只在可选变量为空时抛出异常,这意味着当isExist = true时。如果isExist = false,什么都不会发生。您可以在下面的签名中了解orElseThrow的基本概念.

代码语言:javascript
运行
复制
public void orElseThrow(Exception ex){
  if(!isPresent()){
     throw ex;
  }
}
票数 2
EN

Stack Overflow用户

发布于 2021-12-09 13:02:37

不要为此使用Optional。只是没必要。使用普通命令式代码:

代码语言:javascript
运行
复制
if (!isExist) {
  throw new Exception();
}
// You don't show what you do with the result, but presumably you do something
// like return or assign to a variable:
return 1;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70289609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档