【发布时间】:2018-08-09 11:32:30
【问题描述】:
假设我有一个报告流,并且我有一个方法可以检查用户是否有权阅读每个报告。如果用户没有权限,这个方法会抛出异常
checkReadAuthorization(Report report) throw AccessViolationException;
有没有办法过滤掉该方法引发异常的所有报告?比如:
reports.stream()
.filterThrowingException(this::checkReadAuthorization);
现在我有一个函数,如果抛出异常,它会返回 true 或 false,但我想知道是否有更好的方法来实现这一点
private boolean checkAuthorization(Report report) {
try {
checkReadAuthorization(report);
return true;
} catch(AccessViolationException ex) {
return false;
}
}
然后我在这样的过滤器中使用它
return dossiers.stream()
.filter(this::checkAuthorization)
.collect(Collectors.toList());
【问题讨论】:
-
更好的方法是重构 checkReadAuthorization 以便它返回一些东西(例如布尔值)而不是抛出异常。
标签: java list exception java-8 java-stream