必须使用“orElseThrow”的返回值

时间:2018-03-28 10:43:22

标签: java java-8 sonarqube

当我使用声纳lint扫描代码时,以下代码显示错误为“必须使用”返回值“orElseThrow”

itemList.stream().filter(item ->orderItemId.equals(item.getId()))
.findAny().orElseThrow(() -> new BadRequestException("12345","Item Not Found"));

这仅用于验证目的,无需从此语句返回任何内容。需要验证项目是否存在。

仅供参考:Eclipse显示快速修复为squid:S2201

任何人都知道如何解决这个错误?

1 个答案:

答案 0 :(得分:12)

我假设这是一个警告(不使用orElseThrow()返回的值不应该是错误。)

如果您希望消除该警告,请改为使用isPresent()

if (!itemList.stream().filter(i->orderItemId.equals(i.getId())).findAny().isPresent()) {
    throw new BadRequestException("12345","Item Not Found");
}

或者只是避免使用Optional,而是使用anyMatch()代替:

if (!itemList.stream().anyMatch(i->orderItemId.equals(i.getId()))) {
    throw new BadRequestException("12345","Item Not Found");
}