У меня есть служба vertx для всех операций, связанных с брокером сообщений. Например, функция создания обмена выглядит так:
@Override
public BrokerService createExchange(String exchange,
Handler<AsyncResult<JsonArray>> resultHandler) {
try {
getAdminChannel(exchange).exchangeDeclare(exchange, "topic", true);
resultHandler.handle(Future.succeededFuture());
} catch(Exception e) {
e.printStackTrace();
resultHandler.handle(Future.failedFuture(e.getCause()));
}
return this;
}
Я нахожусь в процессе преобразования всей моей кодовой базы в rx java, и я хотел бы преобразовать подобные функции в завершаемые. Что-то вроде:
try {
getAdminChannel(exchange).exchangeDeclare(exchange, "topic", true);
Completable.complete();
} catch(Exception e) {
Completable.error(new BrokerErrorThrowable("Exchange creation failed"));
}
Кроме того, я также хотел бы иметь возможность выдавать пользовательские ошибки, такие как Completable.error(new BrokerErrorThrowable("Exchange creation failed"))
, когда что-то не так. Это сделано для того, чтобы я мог отлавливать эти ошибки и отвечать соответствующими HTTP-ответами.
Я видел, что Completable.fromCallable()
- это один из способов сделать это, но я не нашел способа выбросить эти пользовательские исключения. Как я go об этом? Заранее спасибо!