Vue3学习与实践 · 全局异常监控

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

每个web项目上线后,难免会出现各种奇奇怪怪的bug,或网络,或系统无法,或兼容适配,或测试遗漏等等原因。为了能更快的定位问题,解决问题,所以添加前端异常监控至关重要。本文就具体介绍一下怎么在Vue3项目中配置全局异常监控。

ERROR异常监控

一、方法介绍

在Vue项目中,错误异常监控可从以下三个方法入手:

1. JS全局onerror

特点:

  • 全局监听所有JS错误
  • 无法识别 Vue 组件信息
  • 可以捕获一些 Vue 监听不到的错误,如:异步错误

语法:

window.onerror = function(message, source, lineno, colno, error) {
  console.log(message, source, lineno, colno, error)
  // do something
}

// or

window.addEventListener('error', function(event) { 
  console.log(event)
  // do something
})

参数:

  • message:错误消息(字符串)
  • source:引发错误的脚本的URL(字符串)
  • lineno:发生错误的行号(数值)
  • colno:发生错误的行的列号(数值)
  • error:错误对象(对象)

2. Vue配置方法errorHandler

特点:

  • Vue全局错误监听,所有组件错误都会汇总到这里
  • errorCaptured 返回 false ,错误会被提前拦截阻止,这里无法捕获

配置:

app.config.errorHandler = (err, vm, info) => {
  console.log(err, vm, info)
  // do something
}

参数:

  • err:具体错误信息
  • vm:当前错误所在的Vue实例
  • info:Vue特定的错误信息,错误所在的生命周期钩子

3. 生命周期钩子errorCaptured

特点:

  • 监听所有 下级 组件的错误
  • 返回 false 会阻止错误向上传播

配置:

<script setup>
  import { onErrorCaptured } from 'vue'

  onErrorCaptured((err, vm, info)=>{
    console.log(err, vm, info)
    // do something
  })
</script>  

参数和全局 errorHandler 完全一致

二、方法封装

  1. 新建 commonApi.js 文件,封装 http 接口请求
// src/api/commonApi.js

import store from '@/store';

const osType = (function () {
  const ua = window.navigator.userAgent;
  if (/(Android)/.test(ua)) {
    return 1;
  }
  if (/(iPhone|iPad)/.test(ua)) {
    return 2;
  }
  return 3;
}());

const isProd = process.env.NODE_ENV === 'production';

export default {
  postErrorLogs(prams) {
    /*
    * project 发生项目 可自行定义
    * errorType 错误类型: 1接口报错 2代码报错
    * terminal 终端平台: 1安卓 2ios 3web
    * */
    if (!isProd) return;
    return ajax({
      url: '/api/common/log/error',
      method: 'POST',
      data: {
        ...prams,
        userInfo: store.getters['User/getUserInfo'].userId || '',
        pageUrl: window.location.href,
        project: 'xxx',
        terminal: osType,
      },
    });
  },
}
  1. 新建 errorHandler.js 文件,封装 error 监听方法
// src/common/errorHandler.js

import { nextTick } from 'vue';
import CommonApi from '@/api/CommonApi';

export default {
  errorHandler(err, vm, info) {
    nextTick(async () => {
      await CommonApi.postErrorLogs({
        errorType: 2, // 错误类型: 1接口报错 2代码报错
        errorInfo: err.toString(),
        note: `组件:${vm.$.vnode.type.__file} \n发生错误:${err} \n所在生命周期:${info}`,
      });
    });
  },
  
  async onerror(message, source, lineno, colno, error) {
    await CommonApi.postErrorLogs({
      errorType: 2, // 错误类型: 1接口报错 2代码报错
      errorInfo: `错误原因:${message}\n错误URL: ${source}\n错误行号: ${lineno}`,
    });
  },
};

三、项目配置

在入口文件 main.js 中配置监控方法

// src/main.js

import { createApp } from 'vue'
import ErrorFn from './common/errorHandler';
import App from './App.vue'

const isProd = process.env.NODE_ENV === 'production';

// ...

const app = createApp(App)

if (isProd) {
  app.config.errorHandler = ErrorFn.errorHandler
  window.onerror = ErrorFn.onerror
}

// ...

app.mount('#app')

温馨提示:

  1. onErrorCaptured 钩子监听可以在一些业务比较重要的组件进行配置,收集详细错误信息。
  2. 使用了 onErrorCaptured 建议返回 false,避免收集重复的错误信息。
  3. errorHandleronErrorCaptured 不能收集异步错误。
  4. Vue2 和 Vue3 中的使用方法类似,onErrorCaptured 是Vue3组合式API的方法,Vue2中使用 errorCaptured 钩子即可。

《Vue3学习与实战》系列


欢迎访问:天问博客

| RestTemplate异常处理器ErrorHandler使用详解(SpringBoot) java复制代码/*** 继承默认错误处理器DefaultResponseErrorHandler,无需关注hasError和handlerError方法*/@Component/*** my service进行定制化处理*/@Autowired@Override=302;@Override//遇到401进行单独处理} else {//继续抛异常@OverrideHttpClientUtils工具类java复制代码@Slf4j//http协议。 阅读详情

相关推荐

重生之我在学Vue--第9天 Vue 3 项目整合

经过前八天的技术积累,我们已经掌握了Vue3的核心技术栈。今天将进行「宇宙大整合」,把路由、状态管理、数据请求和UI框架熔铸成一个完整的任务管理系统。这是从「零件组装」到「整车落地」的关键跨越!Vue3 官方中文文档传送点:简介 | Vue.jsVue3 的中文官方文档学习笔记很全还有练习场,推荐去官网学习Vue 前端成仙之路_野生的程序媛的博客-CSDN博客Go 后端成神之路_野生的程序媛的博客-CSDN博客模块化思维:通过「高内聚低耦合」的设计原则,让各模块像乐高积木一样自由组合错误边界管理。

Xiao651的博客 1456

前端 Vue3 如何进行全局异常处理?

要在Vue3中处理全局异常,可以使用Vue实例提供的errorHandler函数。此函数将捕获在组件生命周期期间发生的任何未处理错误,并允许我们在集中位置处理它们。在errorHandler函数中,可以以任何我们认为合适的方式处理错误。可以将其记录到控制台,发送到服务器或向用户显示错误消息。此外,我们还可以使用globalProperties函数将errorHandler函数添加到全局Vue对象中。这将允许我们从应用程序中的任何组件访问errorHandler函数。

黑马程序员官方博客 2521

VUE全局监听键盘事件

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script src="js/vue.js" type="text/javascript" charset="utf-8"></script> <script src="https://cdn.st...

蔡定努 9186

Vue3实战:使用 errorHandler 捕获全局错误

Vue3如何捕获全局错误,能够捕获的错误来源有哪些,如何向服务器端传递,服务器如何处理?

沐爸的博客 3901

Vue3中的Error Handling新特性是什么?如何在应用中有效处理错误?

Vue3 提供了一系列强大的错误处理新特性和 API,让开发者能够更轻松地处理和管理错误。全局错误处理器、组件级错误捕获器,以及组合式 API 的灵活错误处理方式,共同构成了一个全面的错误处理体系。通过遵循最佳实践,包括全局配置、组件隔离、提供用户友好的错误信息、记录错误日志以及实时监控和报警,你可以大幅提升应用的健壮性和用户体验。采用这些新特性和技巧,你的 Vue3 应用将更加健壮、用户友好,并且能够更有效地应对各种意外情况。web前端高频面试题_在线视频教程-CSDN程序员研修院。

有我更精彩的博客 1884

Vue 全局异常捕获终极指南:从入门到精通的全方位攻略

本文深入探讨Vue.js应用中的全局异常处理机制,介绍五种核心方法:Vue.config.errorHandler、window.onerror、unhandledrejection事件、Vue.mixin混入以及Nuxt.js框架级处理。通过实际案例展示如何在不同场景下应用这些方法,并提供了错误上报、用户体验优化等最佳实践。文章还分享了自定义错误类型、错误处理中间件等高级技巧,帮助开发者构建全面的异常处理体系,确保应用稳定性和用户体验。针对不同项目需求,建议灵活组合这些方法,形成多层次的错误防护网。

小伙伴们全都Lucky! 925

Vue Vben Admin 错误处理终极指南:全局异常捕获智能日志上报

Vue Vben Admin 作为一款现代化的Vue3管理后台框架,提供了强大的**全局异常捕获**和**智能日志上报**功能,让开发者能够快速定位和解决应用中的各种问题。这套完整的**错误处理机制**通过统一的异常管理、自动化的错误收集和可视化的日志展示,大幅提升了开发效率和系统稳定性。 ## 🔍 全局异常捕获体系 Vue Vben Admin 的错误处理系统采用了分层设计,能够捕获和处理

gitblog_00450的博客 840

vue-vben-admin错误处理:全局异常捕获用户友好提示

你是否遇到过管理系统突然崩溃、操作半天没反应的情况?这些问题往往源于未处理的错误。本文将带你了解vue-vben-admin如何通过全局异常捕获机制和人性化提示,让系统更稳定、用户体验更流畅。读完你将掌握:全局错误监控方案、前后端错误协同处理、优雅提示组件使用方法。 ## 一、前端全局异常捕获体系 ### 1.1 应用级错误边界 vue-vben-admin在应用初始化阶段就建立了完整的错误...

gitblog_00607的博客 859

Vue-Pure-Admin精简版错误处理监控:403、404、500页面异常捕获机制

Vue-Pure-Admin精简版是一个基于Vue 3和TypeScript构建的后台管理系统框架,它提供了完整的错误处理监控机制,包括403、404、500错误页面和全局异常捕获。对于Vue 3开发者来说,掌握这个框架的错误处理机制能显著提升应用的用户体验和稳定性。 ## 🔍 Vue-Pure-Admin精简版错误页面体系 Vue-Pure-Admin精简版内置了完整的错误页面系统,通过

gitblog_01188的博客 934

ABP Vnext Pro全局异常处理:统一返回格式错误日志记录实践指南 [特殊字符]

在现代企业级应用开发中,**abp-vnext-pro全局异常处理**是构建稳定、可维护系统的关键环节。ABP Vnext Pro作为基于ASP.NET Core的现代化应用框架,提供了一套完整的异常处理机制,帮助开发者实现统一的错误响应格式和全面的错误日志记录。 ## 为什么需要全局异常处理?🤔 在分布式系统中,异常处理不当会导致用户体验差、排查困难、系统稳定性下降等问题。**abp-vn

gitblog_00929的博客 314

Vue2.x项目整合ExceptionLess监控

一直以来我们都是用Sentry做项目监控,不过前段时间我们的Sentry坏掉了(我搞坏的) 但监控又是很有必要的,在sentry修好之前,我想先寻找一个临时的替代方案,同时发现网上关于ExceptionLess的资料少得可怜,ExceptionLess官方的文档也不是很完善,翻了好久文档和源码,于是有了本文……

寒冰屋的专栏 243

VUE前端工程报错监控实践

VUE前端工程报错监控实践

pobu168的博客 1660

v3-admin-vite中的错误处理机制:全局异常捕获提示

你是否还在为前端项目中的错误处理头疼?当用户操作触发异常时,控制台报错但界面无反应?网络请求失败后没有友好提示?一文带你深入了解v3-admin-vite框架的错误处理机制,掌握全局异常捕获、统一错误提示和优雅降级的完整解决方案。 读完本文你将获得: - 理解v3-admin-vite的三层错误处理架构 - 掌握Axios拦截器处理网络错误的实现方式 - 学会使用组件化通知系统展示错误信息 - ...

gitblog_00469的博客 793

SpringBoot+Vue 全局异常使用

后台新建一个全局异常监控类,返回统一的数据结构。前台axios在请求的时候判断500错误。

℡メ㏑╭ァ小凯 386

Vue2 + Element UI 实战:如何优雅地处理全局异常处理组件通信?

本文介绍了提升Vue后台管理系统健壮性的两种关键方案:全局异常处理和组件通信优化。在异常处理方面,通过Axios拦截器增强、Vue全局错误捕获和Promise异常处理,构建三层防护体系,确保用户获得友好提示而非白屏。在组件通信方面,对比了三种方案:$attrs/$listeners适用于跨层级传值,EventBus适合非关系组件通信(需注意内存泄漏),Vuex则用于全局状态管理。文章还展示了如何将异常处理融入CRUD Hook,并总结了最佳实践:根据场景选择最简通信方案,Vuex优先于EventBus,$a

2601_95691470的博客 266

终极指南:jeecg-boot前端错误处理的10个核心技巧实现全局异常捕获友好提示设计

jeecg-boot是一款强大的AI低代码平台,支持「低代码 + 零代码」双模式,能够帮助开发者快速搭建业务系统并一键生成前后端代码。在前端开发中,错误处理是确保应用稳定性和用户体验的关键环节。本文将分享jeecg-boot前端错误处理的10个核心技巧,帮助你实现全局异常捕获友好提示设计。 ## 1. 全局错误处理配置:统一捕获应用异常 jeecg-boot前端项目提供了全局错误处理的配置,

gitblog_00946的博客 820

Vue3核心特性组合式API实战指南

前端框架的响应式原理是现代Web开发的核心技术之一,Vue3通过Proxy重构响应式系统,相比Object.defineProperty实现了更高效的依赖收集。组合式API(Composition API)作为Vue3的重要创新,采用函数式编程思想解决了Options API在逻辑复用和代码组织上的痛点。在大型项目实践中,这种架构升级带来了显著的性能提升,如静态标记(PatchFlag)机制使虚拟DOM diff效率提升40%。本文通过对比Vue2/Vue3的组件定义、生命周期管理等核心差异,结合ref/r

weixin_34060299的博客 417

南生论坛监控日志系统:请求监控异常处理性能分析

南生论坛作为企业级微服务开源项目,采用SpringBoot + Vue前后端分离架构,其监控日志系统是保障平台稳定运行的核心组件。本文将详细介绍该系统如何实现请求监控异常处理性能分析,帮助开发者快速定位问题并优化系统性能。 ## 一、请求监控:实时追踪接口性能 ### 1.1 请求拦截器设计 南生论坛通过`RequestMonitor`拦截器实现对所有HTTP请求的实时监控,该类位于`

gitblog_00138的博客 232
上一篇: SolidJS——前端新秀框架,性能直逼原生JS
下一篇: 服务端nodejs抓取jsonp接口数据
天問_
博客等级 码龄5年 654粉丝 147原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值