Vue3 onErrorCaptured errorHandler 异常处理

onErrorCaptured 是 Vue 3 中的一个全局或局部生命周期钩子,用于处理组件在渲染过程中抛出的错误。当组件发生错误并且没有被任何父组件的 errorCaptured 钩子捕获时,这个钩子会被触发。它允许你在全局或局部范围内处理和记录错误,以避免整个应用因为未捕获的错误而崩溃。

全局错误处理

你可以在 Vue 应用实例化时使用 createApp 方法的 config 选项来设置全局错误处理函数:

cpp 复制代码
import { createApp } from 'vue';
import App from './App.vue';

const app = createApp(App);

app.config.errorHandler = (err, instance, source) => {
  console.error('Unhandled error:', err);
  // 可以在这里添加错误报告的逻辑,如发送到服务器
};

app.mount('#app');

局部错误处理

在组件内部,你可以使用 onErrorCaptured 钩子来捕获子孙组件中的错误:

cpp 复制代码
<script setup>
import { onErrorHandler, getCurrentInstance } from 'vue';

const instance = getCurrentInstance();

onErrorHandler((err, instance, source) => {
  console.error('Component caught an error:', err);
  // 可以在这里处理错误,例如记录到日志或显示错误信息
});
</script>

在这个例子中,onErrorHandler 是 onErrorCaptured 的一个别名,它在

错误处理的顺序

当一个错误发生时,Vue 会按照以下顺序进行错误捕获:

组件的 errorCaptured 钩子(如果有的话)。

父组件的 errorCaptured 钩子,向上逐级传递。

如果到达根实例仍未被捕获,Vue 将调用全局 config.errorHandler 钩子(如果有设置的话)。

如果全局 errorHandler 也没有捕获错误,错误将被抛出到全局错误处理机制中。

通过使用 onErrorCaptured,你可以确保应用的稳定性,即使在面对未预料的错误时也能优雅地处理。这对于生产环境中的错误监控和用户体验至关重要。

相关推荐
程序员黑豆2 分钟前
鸿蒙应用开发之状态变化通知:@Watch 装饰器详解与实战
前端·harmonyos
swipe3 分钟前
13|(前端转全栈)支付成功不等于结束:回调、幂等、超时关单和状态竞争
前端·后端·面试
swipe17 分钟前
12|(前端转全栈)点击提交订单后,后端如何用事务守住价格、库存和订单?
前端·后端·面试
小林ixn20 分钟前
React + TypeScript 实战:从“类型体操”到“数据持久化”,一次讲透组件通信与副作用管理
前端·react.js·typescript
何时梦醒20 分钟前
React + TypeScript 企业级开发实战:从零搭建到组件架构演进
前端·react.js·全栈
Coffeeee21 分钟前
AGP9.0的主要变更项,给Gradle来一次大变样
android·前端·gradle
张元清26 分钟前
React useUpdateEffect Hook:跳过首次渲染(2026)
javascript·react.js
无人生还32 分钟前
从 Vue3 到 React · 快速上手系列第 7 篇:副作用与生命周期 —— watch/watchEffect 如何翻译为 useEffect
前端·vue.js·react.js
数聚天成DeepSData36 分钟前
外贸海关进出口数据去哪免费下载?从统计到明细的查找指南
linux·服务器·开发语言·前端·网络·人工智能·自然语言处理
半夜里咳嗽的狼42 分钟前
组件进侧栏就变形?用 CSS Container Queries 把响应式边界收回组件
前端·css