jus*_*Dev 10 java spring reactive-programming spring-boot spring-webflux
我正在开发一个 Spring webflux 项目,我想了解抛出异常与使用Mono.error()之间的区别。
例如,如果有一个像这样的验证类:
public class NameValidator {
public static boolean isValid(String name) {
if(StringUtils.isEmpty(name)) {throw new RuntimeException("Invalid name");}
return true;
}
}
public class NameValidator2 {
public static Mono<Object> isValid(String name) {
if(StringUtils.isEmpty(name)) {
return Mono.error(new RuntimeException("Invalid name"));}
return Mono.just(true);
}
}
Run Code Online (Sandbox Code Playgroud)
每种方法的优点和缺点是什么。使用 spring webflux 处理反应式流时何时使用其中之一?
lka*_*ris 13
正如 @Joao 已经指出的,处理错误的推荐方法是调用( / )error上的方法。PublisherMono.errorFlux.error
我想向您展示一个示例,其中传统方法throw并不像您期望的那样工作:
public void testErrorHandling() {
Flux.just("a", "b", "c")
.flatMap(e -> performAction()
.onErrorResume(t -> {
System.out.println("Error occurred");
return Mono.empty();
}))
.subscribe();
}
Mono<Void> performAction() {
throw new RuntimeException();
}
Run Code Online (Sandbox Code Playgroud)
该onErrorResume运算符永远不会被执行,因为异常是在Mono汇编之前抛出的。
| 归档时间: |
|
| 查看次数: |
22154 次 |
| 最近记录: |