window.onerror,Aegis 通过改写 RN 全局错误处理(ErrorUtils.setGlobalHandler)捕获应用中的 JS 执行错误,将错误信息及堆栈自动上报到后台。错误信息 + 堆栈(${error}\\n${error.stack}),日志等级为 error(全量上报),达到阈值时自动告警并影响应用评分。ErrorUtils.setGlobalHandler 做了防覆盖包装,实现了 SDK 监控逻辑与业务自身错误监听之间共存,互不丢失。catch 的 Promise 错误(unhandled rejection),按 JS 引擎能力自动选择采集通道:运行环境 | 采集方式 |
Hermes 引擎(RN 0.64+ 默认) | HermesInternal.enablePromiseRejectionTracker(allRejections: true) |
旧版 RN(非 Hermes) | promise/setimmediate/rejection-tracking polyfill |
catch 住所有 Promise 错误。XMLHttpRequest 与 fetch,监听每次接口请求,以下情况视为异常请求并上报(日志等级为 Ajax 请求异常):http status 大于等于400;timeout);http status 仍然是0(通常发生于请求失败,如网络错误、跨域、cancel 等)。reportApiSpeed: true 后,Aegis 会尝试从接口响应 body 的第一层(第一层取不到再取第二层)的 code、ret、retcode、errcode 中获取返回码,默认返回码为0视为正常、非0视为异常;返回码异常时会上报一条 retcode 异常日志(等级为返回码异常)。{error: {networkError: false,retcode: 500,},}
error.networkError 为 false 时,归类为返回码异常(RET_ERROR)上报;当 error.networkError 为 true 时视为纯网络错误,忽略不上报(避免与接口请求异常重复上报)。文档反馈