Skip to content

26.Vue 项目中的错误如何处理的?

1.1 errorCaptured 钩子

可以捕获一个来自后代组件的错误时被调用,如果全局的 config.errorHandler 被定义,所有的错误仍会发送它,因此这些错误仍然会向单一的分析服务的地方进行汇报。

父组件(errorCaptured)-》 子组件(errorCaptured)-》 孙子组件出错时,错误会一直向上抛。如果 errorCaptured 中返回 false 则会阻断传播。

错误捕获实现

1.2 全局设置错误处理

如果在组件渲染时出现运行错误,错误将会被传递至全局 config.errorHandler 配置函数。

js
Vue.config.errorHandler = (err, vm, info) => {
  console.log(err, vm, info);
};
Vue.config.errorHandler = (err, vm, info) => {
  console.log(err, vm, info);
};

1.3 接口异常处理

js
instance.interceptors.response.use(
  (res) => {
    return res.data;
  },
  (err) => {
    let res = err.response;
    if (res.status >= 400) {
      handleError(response); // 统一处理接口异常
    }
    return Promise.reject(error);
  }
);
instance.interceptors.response.use(
  (res) => {
    return res.data;
  },
  (err) => {
    let res = err.response;
    if (res.status >= 400) {
      handleError(response); // 统一处理接口异常
    }
    return Promise.reject(error);
  }
);

收集到错误后,提交到前端监控系统中,这样我们可以分析前端代码的异常信息啦。

Released under the MIT License.