首先啊。这玩意其实是我网上查的一份代码本来代码也不多简单改了改。。你说转载吧 好像也不太对。。就标了原创。。
其实就是重写了Page函数,初始化的时候会遍历全部属性,找出全部函数,重写全部函数外面套一层try catch。。就那么回事
获取到错误堆栈然后让后端给你个接口上报日志就哦了。。就这样吧
注意有些函数再初始化的时候是还没有的 比如setData
Page = function(obj) {
for (let key in obj) {
let oldFunction = obj[key]
// console.log(key)
//Hook 所有函数
if (typeof oldFunction === 'function') {
obj[key] = function() {
try {
return oldFunction.call(this, ...arguments)
} catch (e) {
const errInfo = '发生了错误!页面:' + this.__route__ + ',方法:' + key + ',错误信息:' + e.message
console.log(errInfo)
// console.error(e)
// console.log(JSON.stringify(e.stack))
_sendLog("" + e.stack)
throw e
}
}
}
}
return oldPage(obj)
}

本文介绍了一种实现小程序全局异常捕获的方法,通过重写Page函数,遍历并包装所有函数,添加try-catch块来捕获异常。捕获到的错误堆栈可以发送到后端接口进行日志记录。需要注意的是,某些如setData的函数在初始化时可能不存在,需要特别处理。
954





