帮你快速理解、总结文档立即下载

错误监控

最近更新时间:2026-09-28 17:02:02
我的收藏
Aegis 实例会自动对 JS 执行错误、Promise 执行错误、接口请求异常、返回码异常进行监控并上报。本文介绍各错误监控的实现逻辑及处理方式。
注意:
仅引入 SDK 而未实例化时,Aegis 不会上报任何数据。
RN 环境没有 DOM,资源加载失败、WebSocket 异常、白屏监控等浏览器专属能力不适用于 RN,本文不予覆盖。

JS 执行错误

RN 环境没有 window.onerror,Aegis 通过改写 RN 全局错误处理(ErrorUtils.setGlobalHandler)捕获应用中的 JS 执行错误,将错误信息及堆栈自动上报到后台。
上报内容格式为 错误信息 + 堆栈(${error}\\n${error.stack}),日志等级为 error(全量上报),达到阈值时自动告警并影响应用评分。
SDK 对 ErrorUtils.setGlobalHandler 做了防覆盖包装,实现了 SDK 监控逻辑与业务自身错误监听之间共存,互不丢失。

Promise 执行错误

Aegis 监听未被 catch 的 Promise 错误(unhandled rejection),按 JS 引擎能力自动选择采集通道:
运行环境
采集方式
Hermes 引擎(RN 0.64+ 默认)
HermesInternal.enablePromiseRejectionTracker(allRejections: true)
旧版 RN(非 Hermes)
promise/setimmediate/rejection-tracking polyfill
为了页面稳定性,建议您 catch 住所有 Promise 错误。

接口请求异常(XHR / Fetch)

Aegis 改写 XMLHttpRequest 与 fetch,监听每次接口请求,以下情况视为异常请求并上报(日志等级为 Ajax 请求异常):
1. http status 大于等于400;
2. 请求超时(timeout);
3. 请求结束时 http status 仍然是0(通常发生于请求失败,如网络错误、跨域、cancel 等)。
注意:
Aegis SDK 在错误发生时不会主动收集接口请求参数和返回信息,如需对接口信息进行上报,可通过配置 api.apiDetail: true 开启(详见 配置文档)。

返回码异常(retcode)

Aegis 通过两种途径识别返回码异常:
接口响应返回码
开启 reportApiSpeed: true 后,Aegis 会尝试从接口响应 body 的第一层(第一层取不到再取第二层)的 code、ret、retcode、errcode 中获取返回码,默认返回码为0视为正常、非0视为异常;返回码异常时会上报一条 retcode 异常日志(等级为返回码异常)。
可通过 api.retCodeHandler 自定义返回码获取逻辑与异常判定,详见 配置文档 中的 api.retCodeHandler 示例。
Promise 拒绝携带的返回码(RN 特有)
部分网络请求库以 Promise reject 的方式抛出业务异常,错误对象形如:
{
error: {
networkError: false,
retcode: 500,
},
}
Aegis 在 Promise 错误采集通道中识别该结构:当 error.networkError 为 false 时,归类为返回码异常(RET_ERROR)上报;当 error.networkError 为 true 时视为纯网络错误,忽略不上报(避免与接口请求异常重复上报)。