当前位置:首页 > 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; // 阻止错误继续向上传播
  }
}

异步错误捕获

通过 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 推荐)

创建高阶组件包裹目标组件,通过 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 的警告提示:Vue.config.productionTip = false
  • 错误处理函数中避免抛出新错误
  • 重要业务错误建议实时上报至监控系统(如 Sentry)
  • 对于 SSR(Nuxt.js),需同时处理服务端和客户端的错误捕获

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

相关文章

vue全选实现

vue全选实现

Vue 全选实现方法 在 Vue 中实现全选功能通常涉及数据绑定和事件处理。以下是几种常见的实现方式: 基础实现方式 <template> <div> <…

vue tab实现

vue tab实现

Vue Tab 实现方法 使用动态组件实现 Tab 在 Vue 中可以通过动态组件 <component :is="currentTab"> 结合 v-for 和 v-bind 实现 Ta…

vue实现toggle

vue实现toggle

Vue 实现 Toggle 功能 在 Vue 中实现 toggle(切换)功能可以通过多种方式完成,以下是几种常见的方法: 使用 v-model 和 v-on 通过 v-model 绑定数据,结合…

vue拼图实现

vue拼图实现

实现 Vue 拼图游戏的方法 使用 Vue 组件和动态数据绑定 创建一个 Vue 组件来管理拼图的状态和逻辑。通过 v-for 动态渲染拼图块,利用 v-bind 绑定样式和位置。拼图块的数据可以存储…

vue实现select

vue实现select

Vue 实现 Select 组件的方法 在 Vue 中实现 Select 组件可以通过多种方式完成,以下是几种常见的方法: 使用原生 HTML select 元素 原生 HTML 的 <sel…

js 实现vue

js 实现vue

实现 Vue 的核心功能 在 JavaScript 中实现 Vue 的核心功能需要模拟数据绑定、虚拟 DOM 和响应式系统。以下是一个简化版的实现思路: 响应式系统 通过 Object.define…