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

时间:2018-06-02 07:38:55

标签: kotlin kotlin-js

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();")

1 个答案:

答案 0 :(得分:3)

您正在使用的 Kotlin 中的async被定义为

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

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