我正在使用this answer的代码,它运作顺畅。 但是,如果抛出异常,则调用者代码不会捕获它。
如何在reactor 2.0流中捕获异常? 我想要做的是:如果抛出异常,则必须停止流处理。我需要在调用者线程(首先创建了蒸汽的线程)中抛出异常。
List<Map<String, Object>> data = readData();
Streams.from(data)
.flatMap(m -> Streams.just(m)
.dispatchOn(Environment.cachedDispatcher())
.map(ignored -> {throw new RuntimeException("kaboom!");}))
.buffer()
.consume(s -> System.out.println("s: " + s));
// the exception is not thrown and there is not opportunity to deal with it.
答案 0 :(得分:0)
在Reactor中,您只需要包装异常并将其返回为Flux.error()
然后,您可以使用onErrorXXX
方法(例如onErrorResume
)处理它们
查看更多:
https://projectreactor.io/docs/core/release/reference/#error.handling