前端性能监控的 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 对这个值和是否异常进行修正。
说明:
websocket 异常
Aegis 默认不会对全局 websocket 对象进行重写,默认不会监控 websocket 相关错误,如果需要打开相关功能可以在创建 Aegis 对象时设置 websocketHack: true。
new Aegis({id: '',websocketHack: true});