我有以下代码创建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"));
上面的代码不会产生任何错误。 捕获错误打开存储桶的最佳方法是什么?
答案 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”的信息。错误。