在 KMM 中从 Kotlin 转换自定义 Swift 错误?

Casting Custom Swift Error Back from Kotlin in KMM?

提问人:Arsenius 提问时间:10/30/2023 更新时间:10/30/2023 访问量:71

问:

我正在开发一个 Kotlin 多平台移动 (KMM) 项目,我在 Swift 中定义了一个自定义错误,如下所示:

enum MyError: Error {
    case runtimeError(String)
}

我在 Swift 中有一个方法会抛出此错误:

func someThrowableMethod() throws -> {
   throw MyError.runtimeError("my custom error")
}

在 Kotlin 方面,我捕获了这个异常,并尝试将其传递回一些 Swift 代码:

try {
   someThrowableMethod()
} catch(err: Throwable) {
   passToIosCode(err)
}

现在回到 Swift,我有以下方法:

func passToIosCode(err: KotlinThrowable) {
   err.asError() // how to extract MyError? 
}

我正在寻找一种方法将 Kotlin 中被捕获的人扔回 Swift。我怎样才能做到这一点?在 KMM 项目中,是否有一种机制可以从 Kotlin 中解包或转换原始 Swift 错误?MyError

iOS Swift Kotlin 错误处理 Kotlin-Multiplatform

评论

2赞 Sweeper 10/30/2023
Kotlin 甚至可以捕获 Swift 错误吗?据我从文档中看到,这还没有实现。“Swift/Objective-C 错误抛出方法不会作为异常抛出导入到 Kotlin 中。”
0赞 Arsenius 10/30/2023
它可以捕获为 .你可以尝试它能够抓住。NSError
0赞 Sweeper 10/30/2023
这可能会有所帮助。
0赞 Arsenius 10/30/2023
@Sweeper谢谢,这是有帮助的!这种重新投掷机制看起来很奇怪,但它有效。

答: 暂无答案