问题描述
查看此代码:
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)));