非法状态异常("JsonReader is closed")
IllegalStateException("JsonReader is closed")
此代码不会抛出:
override fun fromJson(reader: JsonReader): List<MyObj> {
val result = ArrayList<MyObj>()
reader.beginObject()
while (reader.hasNext()) {
result.add(MyObj(reader.nextName(), reader.nextString()))
}
reader.endObject()
return result
}
但是如果我在 return 之前添加 reader.close
,或者使用 reader.use { }
,它会被捕获到这里:
private fun <T> networkTransform(): SingleTransformer<Response<T>, Response<T>> {
return SingleTransformer {
it.onErrorResumeNext { throwable -> ...}
...
所以我的问题是,我们需要处理 close() 吗?
您不应该在 JsonAdapter 本身中关闭 reader,只有调用代码(即创建 reader 并调用 fromJson() 的人)需要处理它。
此代码不会抛出:
override fun fromJson(reader: JsonReader): List<MyObj> {
val result = ArrayList<MyObj>()
reader.beginObject()
while (reader.hasNext()) {
result.add(MyObj(reader.nextName(), reader.nextString()))
}
reader.endObject()
return result
}
但是如果我在 return 之前添加 reader.close
,或者使用 reader.use { }
,它会被捕获到这里:
private fun <T> networkTransform(): SingleTransformer<Response<T>, Response<T>> {
return SingleTransformer {
it.onErrorResumeNext { throwable -> ...}
...
所以我的问题是,我们需要处理 close() 吗?
您不应该在 JsonAdapter 本身中关闭 reader,只有调用代码(即创建 reader 并调用 fromJson() 的人)需要处理它。