2

我有以下代码创建 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")); 

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

4

1 回答 1

2

问题可能是您正在订阅 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"));

我对此进行了测试,它给出了一个“桶“错误名称”不存在。错误。

于 2019-06-03T15:06:07.663 回答