处理 RX 中的 response.body == null
Posted
技术标签:
【中文标题】处理 RX 中的 response.body == null【英文标题】:Handle response.body == null in RX 【发布时间】:2021-12-25 19:49:09 【问题描述】:我在下面的android中使用Rx
repository.getUserList()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe( response ->
val userList = response.body()!!
view.showUser(userList)
, throwable ->
handlerException(view, throwable)
).addToDisposable()
有效。
但有时response.body()
为空,可能是网络错误或服务器没有响应,
那么应用就会崩溃。
所以我必须像这样添加try catch
repository.getUserList()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe( response ->
try
val userList = response.body()!!
view.showUser(userList)
catch (e: Exception)
handleException(view, e)
, throwable ->
handleException(view, throwable)
).addToDisposable()
但我认为应该有更好的方法来处理 rx 中的错误。 谁能帮帮我,谢谢。
【问题讨论】:
【参考方案1】:你可以使用过滤运算符
.filter it != null
这是 RX 方式,但您可以像这样使用 kotlin 空安全:
.subscribe( response ->
response.body()?.let
view.showUser(userList)
希望对你有所帮助??
【讨论】:
谢谢。但我认为它和try catch
一样。以上是关于处理 RX 中的 response.body == null的主要内容,如果未能解决你的问题,请参考以下文章
spring cloud gateway获取response body
如何从 Objective-C 中调用的 JavaScript 函数访问 response.body?
Postman-----将 A 请求中 response Body 中的参数值传入到下一个请求 B 的 request body 中作为参数发送请求
json.decode(response.body)......“这里的response.body不起作用......” [重复]