当前位置:首页 > VUE

vue错误捕获实现

2026-03-08 01:32:50VUE

Vue 错误捕获的实现方法

全局错误捕获(Vue 2 & Vue 3)

通过 Vue.config.errorHandler 全局配置捕获组件渲染、事件处理器等未处理的错误:

Vue.config.errorHandler = function (err, vm, info) {
  console.error('全局捕获:', err, info);
  // 可上报错误至日志服务
};

Vue 3 中改为 app.config.errorHandler,用法类似。

生命周期钩子捕获

在组件内部使用 errorCaptured 钩子捕获子孙组件的错误(Vue 2.5+ 和 Vue 3):

export default {
  errorCaptured(err, vm, info) {
    console.error('组件级捕获:', err, info);
    return false; // 阻止错误继续向上传播
  }
}

异步错误捕获

vue错误捕获实现

通过 window.onerrorwindow.addEventListener('error') 捕获全局脚本错误:

window.addEventListener('error', event => {
  console.error('脚本错误:', event.error);
});

使用 unhandledrejection 捕获未处理的 Promise 异常:

window.addEventListener('unhandledrejection', event => {
  console.error('Promise 异常:', event.reason);
});

错误边界组件(Vue 3 推荐)

vue错误捕获实现

创建高阶组件包裹目标组件,通过 v-if 控制错误状态下的 UI 展示:

<template>
  <slot v-if="!hasError"></slot>
  <div v-else class="error-fallback">组件崩溃</div>
</template>

<script>
export default {
  data: () => ({ hasError: false }),
  errorCaptured() {
    this.hasError = true;
    return false;
  }
}
</script>

Axios 拦截器捕获

在请求拦截器中统一处理 HTTP 错误:

axios.interceptors.response.use(
  response => response,
  error => {
    console.error('请求错误:', error);
    return Promise.reject(error);
  }
);

注意事项

  • 生产环境应关闭 Vue 的警告提示:Vue.config.productionTip = false
  • 错误处理函数中避免抛出新错误
  • 重要业务错误建议实时上报至监控系统(如 Sentry)
  • 对于 SSR(Nuxt.js),需同时处理服务端和客户端的错误捕获

标签: 错误vue
分享给朋友:

相关文章

vue中登陆实现逻辑

vue中登陆实现逻辑

Vue 中登录实现逻辑 前端实现逻辑 表单验证 使用 Vue 的表单验证库(如 VeeValidate)或自定义验证规则,确保用户输入的账号和密码符合要求。例如,检查邮箱格式、密码长度等。 发送登录…

vue实现级联

vue实现级联

Vue 实现级联选择器的方法 级联选择器(Cascader)是常见的表单组件,用于处理多层级联动数据选择(如省市区选择)。以下是几种实现方式: 基于 Element UI 的 el-cascader…

vue实现批量

vue实现批量

Vue 实现批量操作的方法 在 Vue 中实现批量操作通常涉及选择多个项目并执行统一处理,例如批量删除、批量更新等。以下是几种常见实现方式: 表格多选批量操作 使用 el-table 配合复选框实现…

vue实现公告

vue实现公告

Vue 实现公告功能的方法 公告功能通常需要实现滚动展示、自动切换或固定显示的效果。以下是几种常见的实现方式: 使用 marquee 标签实现滚动公告 <template> &l…

vue轮播实现

vue轮播实现

Vue 轮播实现方法 使用第三方库(推荐) 安装 swiper 或 vue-awesome-swiper 库,快速实现功能丰富的轮播效果。 以 vue-awesome-swiper 为例: npm…

vue实现导入

vue实现导入

Vue 实现文件导入功能 使用 <input type="file"> 元素 在 Vue 模板中添加一个文件输入元素,绑定 change 事件处理函数。 <template>…