将函数转换为具有自定义异常的可完成函数

Convert function into a completable with custom Exceptions

我有一个用于所有消息代理相关操作的顶点服务。例如交换创建函数如下所示

@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;
    }

我正在将我的整个代码库转换为 rxjava,我想将这些函数转换为可完成的。类似于:

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() 是一种方法,但我还没有找到抛出这些自定义异常的方法。我该怎么做?提前致谢!

我想通了。我所要做的就是:

@Override
  public BrokerService createExchange(String exchange, Handler<AsyncResult<Void>> resultHandler) {
    Completable.fromCallable(
            () -> {
              try {
                getAdminChannel(exchange).exchangeDeclare(exchange, "topic", true);
                return Completable.complete();
              } catch (Exception e) {
                return Completable.error(new InternalErrorThrowable("Create exchange failed"));
              }
            })
        .subscribe(CompletableHelper.toObserver(resultHandler));

    return this;
  }