繁体   English   中英

在RxJava / RxKotlin中,返回Completable.error(Exception())与抛出之间有什么区别?

In RxJava/RxKotlin, what are the differences between returning a Completable.error(Exception()) and throwing?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

在以下情况下有什么区别:

fun a(params: String) = Completable.fromAction {
        if (params.isEmpty()) {
            throw EmptyRequiredFieldException() 
        }
    }

VS

fun b(params: String) = if(params.isEmpty()) 
       Completable.error(EmptyRequiredFieldException()) 
else 
       Completable.complete()

特别是在android的上下文中,如果它很重要(即使我认为不重要),谢谢!

1 个回复

根据文档

如果操作引发异常,则除非下游已处置此Completable源,否则各自的Throwable将通过CompletableObserver.onError(Throwable)传递到下游。 在后一种情况下,Throwable通过RxJavaPlugins.onError(Throwable)作为UndeliverableException传递到全局错误处理程序。

因此,您所描述的两种方式都是相似的(下游已废弃时除外)。 请注意,第一种方法(具有手动引发的异常)允许在运行时修改Completable行为。 第二个-静态定义为您返回特定类型的Completable且无法对其进行修改。

选择什么取决于您的需求。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题
 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM