Skip to main content
本文档介绍异常类型、捕获机制、手动上报方法、React 集成以及上报的异常数据结构定义。

异常类型

RUM 可以监控以下类型的异常:
包括代码语法错误、运行时异常和未处理的 Promise 异常等。这些问题可能导致页面功能失效,严重影响用户体验。

上报方式

自动错误捕获

RUM SDK 自动捕获以下类型的浏览器错误:
  • 自动捕获的错误默认包含堆栈跟踪、错误消息和来源信息。
  • 来自浏览器扩展或第三方脚本的错误(如 network 来源)会被过滤,避免数据污染。

手动错误上报

通过 addError API,您可以手动上报已处理的异常、自定义错误或其他未被自动捕获的错误。 适用场景:
  • 记录业务逻辑中的已处理错误
  • 附加上下文信息(如用户 ID、页面状态)以便问题排查
  • 监控第三方服务或异步操作的异常

React 错误边界集成

RUM 支持通过 React 错误边界捕获组件渲染错误,并将错误信息上报。您可以在 componentDidCatch 中调用 addError API,附加组件堆栈信息以便调试。
1

创建错误边界组件

2

使用错误边界包装组件

错误数据结构

每条错误数据包含以下属性,用于描述错误详情和上下文:
string
错误来源(如 consolenetworkcustomsourcereport)。微信小程序 SDK 还会上报 app(来自 wx.onError)和 promise(来自 wx.onUnhandledRejection)两个值,详情见微信小程序数据采集
string
错误类型或错误码(如 TypeErrorNetworkError
string
简洁的可读性强的错误消息
string
错误堆栈跟踪或补充信息
Array
提供额外上下文的关联错误列表(可选)
Object
自定义上下文信息(如页面状态、用户 ID),通过 addError 传入

错误过滤与配置

为确保错误数据的准确性和相关性,RUM 应用以下过滤规则:
  • 仅处理 sourcecustomsourcereportconsole 的错误
  • 忽略来自浏览器扩展、第三方脚本或 network 来源的无关错误
错误必须包含堆栈跟踪信息,否则可能被忽略
使用 beforeSend 回调自定义错误处理逻辑,过滤或修改错误数据

自定义错误过滤示例

常见问题

  • 确认堆栈跟踪是否完整,或自定义指纹是否冲突
  • 检查 sourcemap 是否正确上传,若未上传,堆栈可能无法正确解析
使用 beforeSend 回调过滤特定错误来源或消息:
  • 确保 fingerprint 属性正确设置,且值为字符串
  • 检查 beforeSend 回调是否被正确调用

最佳实践

丰富上下文信息

addError 中附加业务相关上下文(如用户 ID、操作类型),便于问题定位。示例:{ userId: "12345", action: "submit_form" }

优化错误边界

为关键 React 组件配置错误边界,确保渲染错误被捕获。记录组件名称和版本,便于追踪问题。

控制错误量

使用采样率或 beforeSend 过滤低价值错误,避免数据过载。优先监控影响用户体验的关键错误。

分析与可视化

在「分析看板」-「异常分析」Tab 查看错误数据趋势和分布,解决重点异常问题。

下一步

查看异常

了解如何在异常追踪模块查看和分析 Issue