lynx.reportError
方法可以被用来手动在 JavaScript 中上报一个错误。
lynx.reportError
第一个参数可以接收一个字符串或者一个 Error 对象。第二个参数可以接收一个可选的 options 对象,其中的 level
表明错误的级别,其中 fatal
级别会中断执行环境的运行,避免引发更多连锁错误。
如果传入一个字符串,会使用该字符串作为 message
来构造一个 Error
对象。
也就是说,这种写法
和下面的写法有着相同的作用
无(undefined
)。
一个常见的使用方式是,上报一个异步函数的回调中产生的错误。
但是这样会得到一个这样的错误堆栈:
堆栈的第一帧指向 lynx.reportError
方法,第二帧指向传入 fetch
的 cb
方法,没有更多的堆栈信息了。
无法从堆栈中得知,什么方法调用了 getData
。
这是因为 Lynx 中的 Promise
是通过 setTimeout
来实现的,无法获取异步任务的堆栈信息。
而这个问题可以通过提前构造一个 Error
对象来解决。