Skip to main content

错误监控

实例在初始化之后会自动进行以下监控

  • JS执行错误

  • Promise执行错误

  • 页面不存在错误

  • 异步组件加载失败错误

  • 网络请求错误(request,uploadFile,downloadFile)

  • 云函数错误(callFunction,callContainer)

  • websocket错误

开启 plugin.apispeed:true 参数后,会自动监听以下异常

  • retcode异常

注意!是实例会进行监控,当您只是引入了 SDK 而没有将其实例化时,SDK将什么都不会做。

JS执行错误

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

注意:如果用户使用的是 vue 框架,请务必自己获取错误并且主动上报

Promise执行错误

通过监听 onUnhandledRejection 事件,捕获到未被 catch 的Promise错误,为了页面的健壮,建议您 catch 住所有的Promise错误。

Ajax请求异常

SDK 将会改写 wx.request(qq.request) 对象,监听每次接口请求,当 statusCode 不存在或者大于等于 400 时认为该请求是一个失败的请求,亦或是接口超时,abort 和其他类型的失败。

注意: SDK 在错误发生的时候,不会主动收集接口请求参数和返回信息,如果需要对进口信息进行上报,可以使用 api 参数里面的 apiDetail 进行开启。

new Aegis({
id: '',
api: {
apiDetail: true,
},
});

retcode异常

同上,SDK 在改写 wx.request(qq.request) 对象之后,将获得API返回的内容,并尝试在内容中获取到本次请求的 retcode

retcode 的值会从用户返回 response body 的第一层(如果第一层取不到,再取第二层)的 code、ret、retcode、errcode 中获取。 Aegis 默认 retcode 的值为0是正常的,非0都是异常的。当 retcode 发生异常的时候,会上报一个 retcode异常的日志。 用户可以通过 api.retCodeHandler 对这个值和是否异常进行修正。

websocket异常

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

new Aegis({
id: '',
websocketHack: true
});