我有一个简单的 java 验证流程,像这个例子:
if (!request.isValid()) {
throw new ValidationException("Its not valid");
}
if (!request.isCorrect()) {
throw new IncorrectException();
}
return Mono.just(
someService.process(request)
);
我试图链接方法调用以摆脱,ifs
但这不起作用:
return Mono.just(request)
.filter(req -> !req.isValid())
.switchIfEmpty(Mono.error(new ValidationException("Its not valid")))
.filter(req -> !req.isCorrect())
.switchIfEmpty(Mono.error(new IncorrectException()))
.flatMap(req -> Mono.just(someService.process(req)));
问题是,即使isValid()
代码继续失败并且第二个会switch
覆盖第一个。
我怎样才能使代码工作并保留链接?