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 ответ
Решение
async
в Kotlin, который вы используете, определяется как
fun <T> async(block: suspend CoroutineScope.() -> T): Deferred<T>
куда Deferred
отслеживает состояние и нигде не распространяет исключение. Вы могли бы использовать async { ... }.asPromise()
соединить с JavaScript и распространять отказ для правильной обработки.