当前位置: 首页 > news >正文

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

1、 组件中的处理:使用 errorCaptured 钩子

作用:可以捕获来自后代组件的错误

父组件(errorCaptured) -> 子组件 (errorCaptured) -> 当孙子组件出错时,错误会一直向上抛,也就是先触发子组件的 errorCaptured,然后触发父组件的 errorCaptured。如果 errorCaptured 中返回 false 则会阻断传播。 

原理:Vue底层源码会在很多地方都做了错误处理,例如在渲染的时候出错或者数据初始化的时候出错都会触发handleError方法,传入错误信息和实例等;再判断父组件上是否有 errorCaptured 属性,有的话拿到这个钩子便执行;判断当前钩子的返回值是否为false,为false的话就终止向上传播;

如果全局的 config.errorHandler 被定义,所有的错误仍会发送它,因此这些错误仍然会向单一的分析服务的地方进行汇报。

 

2、全局处理:设置错误处理 errorHandler

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

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

底层原理:每次捕获到错误之后,除了调用上级组件的  errorCaptured  之外呢,还会命中 globalHandleError方法,这个就是全局错误处理方法。将错误传到全局错误处理这里。

如果子组件返回了false,这里的全局设置也会捕获不到错误。 

 

3、接口异常处理:响应拦截

在拦截器中对状态码进行拦截; 

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

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

http://www.lryc.cn/news/150895.html

相关文章:

  • 网络分层的真实含义
  • RT-Thread 线程间同步
  • Python元类再解释
  • 常用的Spring Boot 注解及示例代码
  • react app教程
  • 在vue项目中用vue-watermark快捷开发屏幕水印效果
  • 无涯教程-Android - Activity
  • vue项目前端展示数学公式(在表格中渲染)
  • java八股文面试[数据库]——MySQL索引的数据结构
  • python3.11教程2:基础数据类型(数字和字符串)、组合数据类型(集合、元组、列表、字典)
  • 剑指 Offer 44. 数字序列中某一位的数字(中等)
  • SpringBoot中HttpClient的学习
  • JVM-内存溢出的原因、CPU占满的原因
  • 如何做好银行统一报送系统UI设计
  • 988. 从叶结点开始的最小字符串
  • RealSense D455启动教程
  • docker与phpstudy两种方式部署wordpress 并 开启伪静态
  • 网站搭建最简化的引导操作 | 云服务器的购买选用 | 域名的选用 | 网站的上线和备案。
  • Spring Cloud Foundry上使用通配符模式匹配进行的安全绕过漏洞 CVE-2023-20873
  • 简述SpringMVC
  • vue竖向步骤条
  • java八股文面试[多线程]——Synchronized优化手段:锁膨胀、锁消除、锁粗化和自适应自旋锁
  • 【数据结构】队列---C语言版(详解!!!)
  • java:详解http模块request对象
  • 力扣20. 有效的括号
  • 用springboot+elasticserach7的demo,对比sider和百度ai的异同
  • Python的pymysql模块与MySQL数据库的互动:基础与实例
  • 滑动窗口实例1(长度最小的子数组)
  • EI、Scopus双检索| 2023年第四届自动化、机械与设计工程国际会议
  • 【混合时变参数系统参数估计算法】使用范数总和正则化和期望最大化的混合时变参数系统参数估计算法(Matlab代码实现)