将函数转换为具有自定义异常的可完成函数
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;
}
我有一个用于所有消息代理相关操作的顶点服务。例如交换创建函数如下所示
@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;
}