小程序全局异常捕获

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

首先啊。这玩意其实是我网上查的一份代码本来代码也不多简单改了改。。你说转载吧 好像也不太对。。就标了原创。。
其实就是重写了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)
    }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值