微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 Mono.doOnError 打印错误日志

如何解决为什么 Mono.doOnError 打印错误日志

我有将数据存储到 couchbase 数组的功能。我正在使用 couchbase 3.0 sdk 中的反应式集合。

使用下面的示例,我可以存储数据,但我在日志中打印了 CasMismatchException。但由于它是预期的,我不想打印它,我该如何实现?

private Consumer<? super Throwable> upsert(String key,String value) {
    return e -> {
      if (e instanceof CasMismatchException || e instanceof DocumentExistsException) {

            defaultCollection // couchbase reactive default colection
            .get(key)
            .subscribe(
                s -> {
                  List<String> values = new ArrayList<>();
                  values.addAll(s.contentAs(ArrayList.class));
                    values.add(value);
                    defaultCollection
                        .replace(key,values,ReplaceOptions.replaceOptions().cas(s.cas()))
                        .doOnError(upsert(key,value))
                        .subscribe();
                });
      } else {
        LOGGER.error("Error on couch operation on - {}",e);
      }
    };
  }

代码打印错误日志,我可以避免吗?

解决方法

我使用 Hooks.onErrorDropped 解决了重复打印错误。

warning: unable to build chain to self-signed root for signer "Apple Distribution: name. (teamID)"
/Users/name/Library/Developer/Xcode/DerivedData/app-fjkfkfdf/Build/Intermediates.noindex/ArchiveIntermediates/helloworld/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/Info.plist.appex: errSecInternalComponent'

但正如评论中所建议的,您也可以使用 onErrorResume。我将 onErrorDropped 用于我的特定情况。更详细的解释可以在下面的链接中找到。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。