错误跟踪
获得对 Web 应用中错误的高层次和细粒度的可见性。借助 OpenReplay,你可以在完整上下文中进行故障排查,从而更快地解决问题。
不同视图中的错误跟踪洞察
Section titled 不同视图中的错误跟踪洞察从 Sessions 视图
Section titled 从 Sessions 视图- 导航至会话视图 > Errors 选项卡
- 使用 Omnisearch:选择事件 “Error Message” 并输入具体的错误信息。
在单个会话内
Section titled 在单个会话内- 导航至 Console > Errors 选项卡
- 打开错误以查看完整的 sourcemap。
- 点击 “Find all sessions with this error” 查看发生该错误的会话列表。
从 Cards 视图
Section titled 从 Cards 视图- 导航至 Cards > Add Card > Monitors
- 选择 Table of Errors 卡片
手动记录异常
Section titled 手动记录异常OpenReplay 跟踪器支持记录三种类型的错误:
- 捕获的异常 - Error
- 被拒绝的 Promise - PromiseRejectionEvent
- 错误事件(onError) - ErrorEvent
所有这些都可以使用同一个方法进行上报:
tracker.handleError(error, metaObject); // metaObject is optional and is a flat object
让我们来看一下每种错误类型的示例:
捕获的异常(Error)
Section titled 捕获的异常(Error)默认情况下,捕获的异常不会记录到 “Console” 选项卡。要上报错误,请使用以下模式:
try {
// application code
} catch (err) {
// application code that handles the error
tracker.handleError(err, metaObject); // metaObject is optional and is a flat object
}
被拒绝的 Promise(PromiseRejectionEvent)
Section titled 被拒绝的 Promise(PromiseRejectionEvent)如果某个 Promise 被拒绝并且需要上报给 OpenReplay,请使用以下方法:
function myFunc() {
doSomeAsyncStuff()
.then((result) => {
// application code
})
.catch(promiseRejectionErr => {
// application code to handle the error
tracker.handleError(promiseRejectionErr, metaObject); // metaObject is optional and is a flat object
});
}
onError(ErrorEvent)
Section titled onError(ErrorEvent)上报由事件触发的错误,例如 <img> 元素加载失败:
<img id="myImg" src="image.gif">
<p id="demo"></p>
<script>
document.getElementById("myImg").addEventListener("error", myFunction);
function myFunction(errorEvent) {
document.getElementById("demo").innerHTML = "The image could not be loaded.";
tracker.handleError(errorEvent, { context: "demo" });
}
</script>