当我使用声纳lint扫描代码时,以下代码显示错误为“必须使用”返回值“orElseThrow”
itemList.stream().filter(item ->orderItemId.equals(item.getId()))
.findAny().orElseThrow(() -> new BadRequestException("12345","Item Not Found"));
这仅用于验证目的,无需从此语句返回任何内容。需要验证项目是否存在。
仅供参考:Eclipse显示快速修复为squid:S2201
任何人都知道如何解决这个错误?
答案 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");
}