Как перехватить ошибку при использовании вызова CouchbaseAsyncCluster.openBucket - PullRequest
2 голосов
/ 01 июня 2019

У меня есть следующий код, который создает кластер 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 Ответ

2 голосов
/ 03 июня 2019

Возможно, проблема в том, что вы подписываетесь на 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« неправильное имя »не существует».ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...