【发布时间】:2019-11-05 10:23:38
【问题描述】:
我一直在使用 kotlin-js 为应用程序编写简单的 Web 前端,但遇到了异常处理的问题。 如我所见,没有 API 可以获取异常堆栈跟踪:https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-throwable/index.html 是这样吗? 如果是,可能有人知道一些库或 sn-ps 从 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 不是标准异常属性,而是现代浏览器常见的属性。
【问题讨论】:
标签: javascript exception stack-trace kotlin-js