gpt4 book ai didi

error-handling - Rxjava 和改造错误处理不起作用

转载 作者:行者123 更新时间:2023-12-03 08:43:00 24 4
gpt4 key购买 nike

我在我的项目中使用改造 2 和 rxjava2,我正在努力处理错误。

        private Observable<Segment> executeUploadVideoUseCase(Segment segment) {
LogDnaLogger.info("Segment upload: " + segment.toString());

return mUploadVideoUseCase.execute().flatMap(voidResponse -> {
LogDnaLogger.info("Segment upload success : " + segment.toString());
return Observable.just(segment);
});

}

mUploadVideoUseCase.execute() is returning
Observable<Response<Void>>.

即使有 400 错误请求异常,我也会进入分段上传成功日志。

如何在这里处理 400 错误请求并将该异常传递给调用函数?

最佳答案

当你将你的接口(interface)声明为 Observable<Response<T>>成功和 HTTP 错误在 onNext 中传递和 onError仅在网络错误的情况下发生 IO 异常时调用。

您可以使用 Response.isSuccess()检查它是成功调用还是 HTTP 错误。

javadoc 中的其他替代声明:
Observable 支持三种配置, Flowable ,
Single , CompletableMaybe类型参数:

  • 直接正文(例如 Observable<User> )调用 onNext与反序列化的主体
    对于 2XX 响应和调用 onErrorHttpException对于非 2XX 响应和 IOException对于网络错误。
  • 响应包装体(例如 Observable<Response<User>> )调用 onNextResponse所有 HTTP 响应和调用的对象 onErrorIOException网络错误
  • 结果包装体(例如 Observable<Result<User>> )调用 onNextResult所有 HTTP 响应和错误的对象。
  • 关于error-handling - Rxjava 和改造错误处理不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60014028/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com