gpt4 book ai didi

java - 我们如何处理 java 流中的异常

转载 作者:搜寻专家 更新时间:2023-11-01 02:35:09 25 4
gpt4 key购买 nike

如何使用流转换这个 for 循环。

for (final Foo foo : fooList) {
if (!FooConstant.FOO_TYPE.equals(foo.getType())) {
throw new BadRequestException(
LOGGER,
FooErrorEnum.NOT_FOO_TYPE.name(),
String.format("Element %s is not Foo type", foo.getId())
);
}
}

我尝试这样做,但 foo.getId()orElseThrow() 中不可用。注意:BadRequestException 是检查异常。

fooList.stream().filter(foo -> !FooConstant.FOO_TYPE.equals(foo.getType())
.findFirst()
.orElseThrow(() -> new BadRequestException(LOGGER, FooErrorEnum.NOT_FOO_TYPE.name(), String.format("Element %s is not Foo type", foo.getId()));

最佳答案

你需要Optional#ifPresent .

fooList.stream().filter(foo -> !FooConstant.FOO_TYPE.equals(foo.getType())
.findFirst()
.ifPresent(foo -> {
throw new BadRequestException(LOGGER, FooErrorEnum.NOT_FOO_TYPE.name(), String.format("Element %s is not Foo type", foo.getId())
});

虽然很奇怪。我们通常以相反的方式使用 Optional:过滤掉无效的选项并找到第一个有效的选项。在您的示例中,orElseThrow 将在一切正常时执行,因此不应抛出任何异常。

注意 BadRequestException 必须是 RuntimeException,否则 it won't compile .

关于java - 我们如何处理 java 流中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58235029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com