有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
前端性能监控的 Aegis 的实例会自动进行 JS 执行错误、Promise执行错误、Ajax(Fetch)请求异常等监控。本文将为您介绍各错误监控逻辑及处理方式。
注意
Aegis 实例会对这些异常进行监控,当您只是引入了 SDK 而没有将其实例化时,Aegis 将不会上报数据。

JS 执行错误

Aegis 通过监听 wx 对象上的 onerror 事件来获取应用中的报错,并且通过解析错误和分析堆栈,将错误信息自动上报到后台服务中。该上报的上报等级为 error ,所以当自动上报的错误达到阈值时,Aegis 将会自动告警,帮助您尽早发现异常。由于上报等级为 error ,自动上报也将影响应用的评分。

request 请求异常

Aegis 将会改写 wx.request(qq.request) ,之后监听每次接口请求,当 statusCode 不存在或者大于等于 400 时认为该请求是一个失败的请求,抑或是接口超时,abort 和其他类型的失败。
如果您的应用中使用了一些库也会重写 wx.request(qq.request),如:miniprogram-api-promise 或者自己有封装,请一定确保在引入这个库之前完成对 Aegis 的初始化,否则将无法监听到接口失败的情况。
注意
Aegis SDK 在错误发生的时候,不会主动收集接口请求参数和返回信息,如果需要对接口信息进行上报,可以使用 API 参数里面的 apiDetail 进行开启。
new Aegis({
api: {
apiDetail: true,
},
});


retcode 异常

Aegis 在改写 wx.request(qq.request),在获得 API 返回的内容,并尝试在内容中获取到本次请求的 retcode
retcode 的值默认会从用户返回 response body 的第一层(如果第一层取不到,再取第二层)的 code、ret、retcode、errcode 中获取。
Aegis 默认 retcode 的值为0是正常的,非0都是异常的。当 retcode 发生异常的时候,会上报一个 retcode异常的日志。
用户可以通过 api.retCodeHandler 对这个值和是否异常进行修正。
说明
如何获取 retcode 以及哪些retcode 是正常的可以在 配置文档 中查看。

websocket 异常

Aegis 默认不会对全局 websocket 对象进行重写,默认不会监控 websocket 相关错误,如果需要打开相关功能可以在创建 Aegis 对象时设置 websocketHack: true。
new Aegis({
id: '',
websocketHack: true
});