我有一个方法,它遍历一个List并创建一个List。在这个过程中,我调用了一个方法(createResult)来获取一个结果,同时也会抛出CustomException异常,我将其包装成ResultClassException。但是我一直收到未处理的异常错误。
我的代码:
private List<Result> getResultList(List<String> results) throws ResultClassException {
List<Result> resultList = new ArrayList<>();
results.forEach(
(resultName) -> {
if (!resultRepository.contains(resultName)) {
try {
final Result result = createResult(resultName);
resultList.add(result);
} catch (CustomException e) {
throw new ResultClassException("Error",e);
}
} else {
resultList.add(resultRepository.get(resultName));
log.info("Result {} already exists.", resultName);
}
}
);
return Collections.unmodifiableList(resultList);
}
有人能告诉我我做错了什么吗?
ResultClassException
不是RuntimeException
的子类,要么resultRepository.get(resultName)
会抛出一个已检查的异常。在forEach
的lambda内部,您不能抛出已检查的异常,因为此lambda将无法对应于Consumer
函数接口。 - fpsforEach
。为什么不使用常规的for
循环呢? - shmosel