私は kotlin-js を使用してアプリケーションの単純な Web フロントエンドを作成しており、例外処理の問題に直面しました。ご覧のとおり、例外スタックトレースを取得する 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
します。1 つあるのですが、ソース マッピングを kotlin に戻さないと使いにくい JavaScript コードを指しています。
UPDstack
:標準の例外プロパティではないようですが、最新のブラウザでは一般的なものです。