Я писал простой веб-интерфейс для приложения с kotlin-js и столкнулся с проблемой обработки исключений.
Как я вижу, нет API для получения трассировки стека исключений: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-throwable/index.html
Это так?
Если да, может кто-нибудь знает какую-нибудь библиотеку или фрагменты, чтобы получить трассировку стека из объекта Throwable?
В настоящее время у меня есть обходной путь для этого:
import kotlin.browser.window
fun main() {
window.onload = {
try {
throw RuntimeException()
} catch (e: Throwable) {
console.log(e)
throw e
}
}
}
Вывод на консоль:
Object {
"message_8yp7un$_0": null,
"cause_th0jdv$_0": null,
"stack": "captureStack@http://localhost:9080/js/kotlin.js:1767:27\nException@http://localhost:9080/js/kotlin.js:3244:14\nRuntimeException@http://localhost:9080/js/kotlin.js:3255:17\nRuntimeException_init@http://localhost:9080/js/kotlin.js:3261:24\nmain$lambda@http://localhost:9080/js/web-client.js:34:13\n",
"name": "RuntimeException"
}
Здесь console.log(Throwable)
предоставляет базовые свойства объекта JavaScript, а есть stack
, но он указывает на код JavaScript, который трудно использовать без сопоставления исходного кода с kotlin.
UPD : похоже, что stack
не является стандартным свойством исключения, но является обычным для современных браузеров.