【发布时间】:2022-01-01 16:54:31
【问题描述】:
显然我没能理解使用 kotlin 协程处理异常的逻辑。 请你帮助我好吗? 在我的 Android 应用上,我有一个按钮可以触发 fetch 功能。
这个函数做了三件事:
-
从服务器检索 json 文件 (getRequest) - 可能会失败
-
处理 json 文件 (processJSON) 并在 Departures (departures) 类的实例中临时存储 4 个值。 - 可能由于其他原因而失败
-
用这些值填充 4 个 TextView。 (ui更新) 我希望所有这些字段都填充一个由这些失败函数的 catch 子句生成的可理解的错误消息。 我怎样才能做到这一点?
fun fetch(stopID: String, attr: String, value: String) { lifecycleScope.launch(Dispatchers.IO) { try { val result = getRequest(stopID) val departures = processJSON(result, attr, value) withContext(Dispatchers.Main) {uiUpdate(stopID, departures)} } catch (e: Exception) { } } }
如果我在这里删除 try-catch,应用程序会在出现异常时崩溃。 如果我将 uiUpdate 放入显示的 catch 子句中,它会再次崩溃。
【问题讨论】:
标签: android kotlin kotlin-coroutines coroutine coroutinescope