提示:本站收集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的上下文中,如果它很重要(即使我认为不重要),谢谢!
根据文档 ,
如果操作引发异常,则除非下游已处置此Completable源,否则各自的Throwable将通过CompletableObserver.onError(Throwable)传递到下游。 在后一种情况下,Throwable通过RxJavaPlugins.onError(Throwable)作为UndeliverableException传递到全局错误处理程序。
因此,您所描述的两种方式都是相似的(下游已废弃时除外)。 请注意,第一种方法(具有手动引发的异常)允许在运行时修改Completable
行为。 第二个-静态定义为您返回特定类型的Completable
且无法对其进行修改。
选择什么取决于您的需求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.