public static void main(String[] args) {
Flux.just(1,2,3)
.onErrorContinue((err,i)-> System.out.println(err+" "+i))
.subscribe(i->{
System.out.println(10/(2-i));
}, System.out::println);
}
错误是在使用者函数内部生成的,如何在不取消订阅的情况下处理此类错误。
输出:
10
java.lang.ArithmeticException: / by zero
Process finished with exit code 0
最后一个订阅是整个管道中的最后一步,但实际上在Reactor的最新版本中,基于lambda的订阅程序将在onNext
处理程序中捕获异常,并将其传播到onError
处理程序,这意味着取消。这是库可以进行的最佳默认选择。
如果你不想这样,那么你需要在onNext
处理程序中添加try/catch,就这样