我在网络服务上正确管理错误时遇到了一些麻烦。它们工作得很好,但我希望有一个集中的错误管理,可以轻松控制返回的状态/字符串。
为此,我为我的所有web服务创建了一个父类。这是getList的一个例子。 此函数允许检索Object JSONised的列表。它还管理http状态。
public ResponseEntity<String> getList(Function getFunction) {
String retour = error;
HttpStatus statusRetour = HttpStatus.INTERNAL_SERVER_ERROR;
try {
Object ret = getFunction.apply(null);
if (ret == null || ((List) ret).size() == 0) {
statusRetour = HttpStatus.NOT_FOUND;
} else {
retour = parser.toJson(((List) ret).stream().map(s -> parser.toJson(s)).collect(Collectors.toList()));
statusRetour = HttpStatus.OK;
}
} catch (Exception e) {
Logger.error(getFunction.toString(), e);
}
return new ResponseEntity<String>(retour, statusRetour);
}
//Usage
return this.getList(this.getUserFactory()::getAllUsers);
这很有效。我的问题是,我不能给它一个函数,它将Exception作为一个带有&#34; ::&#34;的参数。风格,即使我在我的功能中管理它们,这给了我这样的东西......
return this.getList(t -> {
try {
return this.getMetierFactory().getAllMetier(t);
} catch (Exception e) {
// some error management ?
return null;
}
});
我发现这有点难看:p
你知道吗?我真的很喜欢&#34; ::&#34;句法。因为我希望我的错误管理能够在我的getList函数中实现,所以阅读和管理更多逻辑的方式更清晰。