【发布时间】:2021-04-06 11:41:17
【问题描述】:
我有这个函数可以发出网络请求并将结果写入 SQLDelight 数据库:
@Throws(Exception::class)
suspend fun updateData()
在 Xcode 的 iOS 项目中,我看到这个函数被翻译成一个带有 completionHandler 类型为 (KotlinUnit?, Error?) -> Void 的函数。
在我的例子中,错误类型只有 1 个可见属性 - localizedDescription。如果我转换为NSError,那么我可以获得更多可见字段,但它们都没有任何帮助。
我在日志中看到Ktor http 客户端中的每个错误在 Swift 中都被抛出为Error。这使得很难知道引发了什么样的错误。
我希望能够查看错误类型并在某些情况下做出不同的反应。例如,如果是网络不可用错误,显示我的自定义错误文本和翻译,或者如果是 401 错误将用户发送到身份验证页面,500 显示一些其他文本等。
对于 Android 应用程序,我想我可以只转发这些异常,并且仍然能够键入检查或访问有关错误的更多数据。但我不知道如何为 iOS 应用程序做些什么。理想情况下,该解决方案应该在两个平台上都运行良好。
在 iOS 和 Android 中处理网络错误或从多平台项目中的共享模块引发的一般任何错误/异常的最佳实践是什么?
【问题讨论】:
-
也许 this 文档页面与此处相关?
-
设法找到解决方案?我也遇到了和你一样的问题
-
这个问题被低估了,有人找到解决方案了吗?这才是真正的痛苦!
标签: android ios error-handling kotlin-multiplatform kotlin-native