← 术语图鉴

错误边界

Error Boundary · 也叫 白屏 / 兜底页 / ErrorBoundary

包在页面外面的一层保护:里面的代码崩溃时,显示一个出错提示,而不是让整页变成空白。

你可能会说:

  • “网站突然整页白了,什么提示都没有,怎么回事?”
  • “一个组件出错,为什么整个页面都没了?”

它是什么

单页应用里,页面是 JavaScript 画出来的。渲染时只要有一处代码抛出错误、没人接住,整棵页面树就会被卸载,访客看到的是一片空白:没有提示,连导航都没了。

错误边界的作用,是在某一层接住这些错误,换上一个"页面出错了"的提示和一条回家的路;最好还能在换一个地址后自动恢复,并把错误上报到日志里,让你知道发生过。

它是最后一道防线,不能代替前面的检查:该判断"数据存不存在"的地方,还是要先判断再读取。

打个比方

像电路里的保险丝:某个电器短路,跳掉的只是这一路,家里其他的灯照样亮着,而且你知道该去哪里合闸。

在这个网站里

兄弟项目 E2E Review 在一次白屏之后加上了错误边界:崩溃时显示"页面出错了"和"返回知识库首页"的按钮,路由一变就自动复位。但它只包住了主体页面,也没有把错误上报到任何地方(第 13 课)。

容易搞混的地方

常见误解

有了错误边界,页面就不会出错了

正确理解

它只决定出错之后显示什么。错误还在,要靠日志和上报才能知道它发生过、发生了几次。

你可以这样告诉 AI

复制下面这段,贴给你的 AI

这个页面里的代码出错时,访客会看到什么?请给页面加上错误边界:显示出错提示和返回的入口,换地址后自动恢复,并把错误信息上报到日志;再告诉我怎么手动触发一次来验证。

先知道

  • 前端——用户直接看到和操作的那部分:页面、样式,以及在浏览器里运行的脚本。

接着看

  • 日志——程序运行时记下的流水账:什么时候、发生了什么、出了什么错。事后排查全靠它。

在这些课里出现

相关的真实事故