Vue errorHandler异常捕获
异常捕获介绍
1.在日常前端开发中对于异常监控的方式可以采用 window.onerror 方式进行监听
window.onerror = function(message, source, lineno, colno, error) { // message:错误信息(字符串) // source:发生错误的脚本URL // lineno:发生错误的行号 // colno:发生错误的列号 // error:Error对象 } //或者 window.addEventListener('error', function(e) { console.log(e) console.log(e.target) })
2.在vue中需要使用errorHandler方法onerror方法无法捕获Vue组件信息
Vue.config.errorHandler = function (err, vm, info) { // err: 具体错误信息 // vm: 当前错误所在的Vue实例 // info: 错误所在的生命周期钩子 }
errorHandler实际应用
针对项目中错误的js语法和接口请求报错进行捕获,需要注意的是接口捕获需要手动捕获
1.在main.js中注册
//因为接口报错需要手动捕获 创建公用方法 const errorHandler = (err, vm, info) => { if(err.isAxiosError){ //axios请求错误 }else{ //js语法错误 console.log('err:'err.toString()) } } //调用 Vue.config.errorHandler = errorHandler //axios手动捕获使用 绑定 prototype Vue.prototype.$throw = (error) => errorHandler(error, this)
2.axios错误捕获在封装好的axios请求中进行错误响应捕获,将错误信息交给 errorHadaler 函数进行处理
Vue.$throw(error) //或 Vue.prototype.$throw(error)
对于error信息的解析
1.通过Json.stringify()对err进行序列化
const errorHandler = (err, vm, info) => { if(err.isAxiosError){ //axios请求错误为手动捕获 不需要进行解析处理 }else{ const errJson = JSON.stringify(err, Object.getOwnPropertyNames(err), 2) console.log(JSON.parse(errJson )) } }
2.通过error-stack-parser解析error堆栈
安装方式:
npm install error-stack-parseryarn add error-stack-parser
//引入error-stack-parser import ErrorStackParser from 'error-stack-parser' const errorHandler = (err, vm, info) => { if(err.isAxiosError){ //axios请求错误为手动捕获 不需要进行解析处理 }else{ const errJson = ErrorStackParser.parse(err)[0] console.log(errJson) //通过fileName截取页面名称 const fileName = stackInfo.fileName.match(/src.*?.vue/g)[0] console.log(fileName) } }
到此这篇关于Vue errorHandler异常捕获的文章就介绍到这了,更多相关Vue errorHandler异常捕获内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
element-plus el-form表单验证使用方法以及注意事项
这篇文章主要给大家介绍了关于element-plus el-form表单验证使用方法以及注意事项的相关资料,表单验证能通过设置验证规则验证用户的输入,并对不规范的输入做出对应提示,文中通过代码介绍的非常详细,需要的朋友可以参考下2023-12-12在Vue+Ts+Vite项目中配置别名指向不同的目录并引用的案例详解
这篇文章主要介绍了在Vue+Ts+Vite项目中配置别名指向不同的目录并引用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧2024-01-01
最新评论