这是我的HandlerFunction
public Mono<ServerResponse> getTime(ServerRequest serverRequest) {
return time(serverRequest).onErrorReturn("some errors has happened !").flatMap(s -> {
// this didn't called
return ServerResponse.ok().contentType(MediaType.TEXT_PLAIN).syncBody(s);
});
}
time(ServerRequest serverRequest)方法是
private Mono<String> time(ServerRequest request) {
String format = DateTimeFormatter.ofPattern("HH:mm:ss").format(LocalDateTime.now());
return Mono.just("time is:" + format + "," + request.queryParam("name").get());
}
当我不使用参数“名称”时,它将抛出一个NoSuchElementException; 但是,Mono onErrorReturn不起作用! 为什么或我错了什么?
答案 0 :(得分:0)
onError...
运算符旨在处理管道中发生的错误信号。
在您的情况下,在任何内容都可以订阅返回的NoSuchElementException
之前,将Mono
抛出到反应式管道之外。
我认为您可以通过推迟执行以下命令来获得所需的行为:
private Mono<String> time(ServerRequest request) {
return Mono.defer(() -> {
String format = DateTimeFormatter.ofPattern("HH:mm:ss").format(LocalDateTime.now());
Mono.just("time is:" + format + "," + request.queryParam("name").get());
});
}