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

时间:2019-06-01 16:18:41

标签: couchbase java-client

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

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

1 个答案:

答案 0 :(得分: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"));

我对此进行了测试,并给出了“不存在桶“ wrongName”的信息。错误。