使用 CouchbaseAsyncCluster.openBucket 调用时如何捕获错误

How to capture error while using CouchbaseAsyncCluster.openBucket call

我有以下创建 Couchbase 集群并尝试打开存储桶的代码。给桶的名称是错误的。我想捕获错误,因为存储桶不存在。使用 java 客户端版本 2.7.6 和 Java 11.

CouchbaseAsyncCluster cluster = 
CouchbaseAsyncCluster.create("localhost");
cluster.authenticate("Administrator", "password");
rx.Observable<AsyncBucket> bucket;
cluster.openBucket("wrongName")
        .doOnError(e -> System.out.println("error occurred"))
        .doOnNext(openbucket -> System.out.println("bucket opened"))
        .subscribe(openBucket -> System.out.println("subscription 
         complete")); 

以上代码不会产生任何错误。 捕获错误打开桶的最佳方法是什么?

问题可能是您正在订阅 Observable,它正在启动异步网络操作,但在它完成之前,您的应用程序正在终止。

为了测试,您可以尝试制作 Observable 块,以便它在应用程序终止之前完成:

    cluster.openBucket("wrongName")
            .doOnError(e -> System.out.println("error occurred"))
            .doOnNext(openbucket -> System.out.println("bucket opened"))
            .toBlocking()
            .subscribe(openBucket -> System.out.println("subscription complete"));

我对此进行了测试,但出现 'Bucket "wrongName" does not exist.' 错误。