如何处理Flatmap中的异常-React Spring

问题描述

查看此代码:

somePostRequest
  .bodyToMono(String.class)
  .flatMap(token -> Mono.just(addTokenToMap(token,bankCode)));

这里的问题是方法addTokenToMap()-需要包装在try catch块中-我希望避免这种情况。有没有办法用doOnError()或类似的方法来解决这个问题?

解决方法

如果创建功能界面和帮助方法,则可以使呼叫站点避免尝试捕获。

如果您只需要使用一次,可能会过头了,但是如果您需要做很多相同的事情,则可以节省一些打字输入。

@FunctionalInterface
interface ThrowableSupplier<T> {
    T get() throws Throwable;
}

public static <T> Consumer<MonoSink<T>> sink(ThrowableSupplier<T> supplier) {
    return sink -> {
        try {
            sink.success(supplier.get());
        }
        catch (Throwable throwable) {
            sink.error(throwable);
        }
    };
}

您的代码成为

Mono.create(sink(() -> addTokenToMap(token,bankCode)));

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...