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 и распространять отказ для правильной обработки.

Другие вопросы по тегам