iOS JavascriptCore 异常详细堆栈跟踪信息
iOS JavascriptCore exception detailed stacktrace info
iOS中的异常堆栈跟踪似乎只包含方法名称或存在错误。下面是我在 JSContext 中处理异常的代码。
context.exceptionHandler = { (ctx: JSContext!, value: JSValue!) in
// type of String
let stacktrace = value.objectForKeyedSubscript("stack").toString()
// type of Number
let lineNumber = value.objectForKeyedSubscript("line")
// type of Number
let column = value.objectForKeyedSubscript("column")
let moreInfo = "in method \(stacktrace)Line number in file: \(lineNumber), column: \(column)"
Logger.error("JS ERROR: \(value) \(moreInfo)")
}
我得到如下日志
ERROR : JSContextRenderer.swift:308 : setupContext : JS ERROR: Error in method clearBackground
Line number in file: 162, column: 12"
请注意,在“clearBackground”名称之后有一个新行,我认为那里可能有更多信息。
哪位有类似经历的可以证实一下吗?任何帮助表示赞赏。谢谢
看起来 stack
中确实显示了更多信息。这是我得到的日志信息之一:
JS ERROR: TypeError: undefined is not a function (evaluating 'msg.__assert__()') in method assert
syncShots
updateSync
initSync
setState
onLogicStateChanged
onLogicStateChanged
[native code]
updateMove
sendMove
shoot
onTouchUp
[native code]
_handleEvent
_dispatchEvent
. Line number in file: 183, column: 20
很久以前,@igrek 问 value
中的键是从哪里来的。它们是 JavaScript 引擎抛出的 Error
对象的一部分,现在在本机错误处理程序回调中显示为 value
。 Error
究竟包括什么取决于实现,但通常包括 message
、fileName
和 lineNumber
。似乎 stack
也受支持。有关 MDN page for Error
的更多详细信息。
iOS中的异常堆栈跟踪似乎只包含方法名称或存在错误。下面是我在 JSContext 中处理异常的代码。
context.exceptionHandler = { (ctx: JSContext!, value: JSValue!) in
// type of String
let stacktrace = value.objectForKeyedSubscript("stack").toString()
// type of Number
let lineNumber = value.objectForKeyedSubscript("line")
// type of Number
let column = value.objectForKeyedSubscript("column")
let moreInfo = "in method \(stacktrace)Line number in file: \(lineNumber), column: \(column)"
Logger.error("JS ERROR: \(value) \(moreInfo)")
}
我得到如下日志
ERROR : JSContextRenderer.swift:308 : setupContext : JS ERROR: Error in method clearBackground
Line number in file: 162, column: 12"
请注意,在“clearBackground”名称之后有一个新行,我认为那里可能有更多信息。
哪位有类似经历的可以证实一下吗?任何帮助表示赞赏。谢谢
看起来 stack
中确实显示了更多信息。这是我得到的日志信息之一:
JS ERROR: TypeError: undefined is not a function (evaluating 'msg.__assert__()') in method assert
syncShots
updateSync
initSync
setState
onLogicStateChanged
onLogicStateChanged
[native code]
updateMove
sendMove
shoot
onTouchUp
[native code]
_handleEvent
_dispatchEvent
. Line number in file: 183, column: 20
很久以前,@igrek 问 value
中的键是从哪里来的。它们是 JavaScript 引擎抛出的 Error
对象的一部分,现在在本机错误处理程序回调中显示为 value
。 Error
究竟包括什么取决于实现,但通常包括 message
、fileName
和 lineNumber
。似乎 stack
也受支持。有关 MDN page for Error
的更多详细信息。