Kotlin js 全局处理未处理的异常

Kotlin js globally handling for unhandled exceptions

Kotlin-js 中是否有合适的方法来全局捕获未处理的异常?

我对 window.onerror 进行了一般性尝试(见下文)。 唯一报告的错误是 non_existing_function2,但其他 2 个案例没有任何报告。

有什么指导吗? 谢谢

window.onerror = { msg, url, line, col, error ->
   window.alert(“Error: $msg \nurl: $url\nline: $line\ncol: $col\nerror: $error”)
   true
}
async {
   throw Exception(“generated”)
}
async {
   js(“non_existing_function1();”)
}

js("non_existing_function2();")

您使用的 Kotlin 中的 async 定义为

fun <T> async(block: suspend CoroutineScope.() -> T): Deferred<T>

其中 Deferred 是有状态的,不会将异常传播到任何地方。您可以使用 async { ... }.asPromise() 桥接到 JavaScript 并传播拒绝以正确处理它。