免费资源网 – https://freexyz.cn/

目录
  • Vue.js全局错误处理函数errorHandler
    • 语法
    • 局错误处理函数errorHandler常见的使用场景
  • Vue errorHandler异常捕获
    • 异常捕获介绍
    • errorHandler实际应用
    • 对于error信息的解析
  • 总结

    Vue.js全局错误处理函数errorHandler

    在 Vue.js 中,errorHandler 函数是全局错误处理函数,用于捕获应用程序中未被捕获的错误。

    你可以通过定义 errorHandler 函数来自定义全局错误处理逻辑。

    语法

    Vue.config.errorHandler = function (err, vm, info) {
      // 错误处理逻辑
    };

    errorHandler 函数接收三个参数:

    • err:表示错误对象,包含有关错误的详细信息,如错误消息、堆栈跟踪等。
    • vm:表示引发错误的 Vue 组件实例。通过访问该实例,你可以获取组件的状态、数据和方法。
    • info:提供有关错误的额外信息,通常是一个字符串,描述了错误发生的位置或上下文。

    示例:

    Vue.config.errorHandler = function (err, vm, info) {
      // 错误处理逻辑
      console.error('全局错误处理:', err, vm, info);
    };

    在上述示例中,errorHandler 函数被定义为一个全局错误处理函数。当应用程序中的任何组件抛出未被捕获的错误时,该函数将被调用。你可以在该函数中编写逻辑来处理错误,如记录错误、显示错误提示、进行错误恢复等。

    需要注意的是,如果你在组件中定义了 errorCaptured 钩子函数来捕获错误,那么该组件的 errorCaptured 钩子函数将优先于全局的 errorHandler 函数被调用。

    局错误处理函数errorHandler常见的使用场景

    • 捕获和记录错误:你可以使用 errorHandler 来捕获应用程序中未被捕获的错误,并将其记录到日志中或发送给远程错误跟踪服务。这样可以帮助你及时发现和解决潜在的问题。
    • 显示错误提示:当应用程序中出现错误时,你可以使用 errorHandler 来显示用户友好的错误提示。例如,你可以通过通知、弹窗或类似的方式向用户展示错误信息,以提供更好的用户体验。
    • 错误恢复和回退:在某些情况下,当应用程序遇到错误时,你可能希望进行错误恢复或回退操作。通过在 errorHandler 中执行相应的逻辑,你可以尝试修复错误或回到应用程序的先前状态。
    • 上报错误统计:除了记录错误,你还可以使用 errorHandler 来进行错误统计和分析。通过收集和汇总应用程序中的错误信息,你可以了解常见错误类型、发生频率等信息,从而进行性能优化和错误预防。
    • 处理异步错误:在异步操作中,错误通常需要手动捕获和处理。在 errorHandler 中,你可以统一处理异步操作中出现的错误,避免它们被静默丢失。

    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 ))
    	}
    }
    

    Vue.js中的全局错误处理函数errorHandler用法

    2.通过error-stack-parser解析error堆栈

    安装方式:

    npm install error-stack-parser

    yarn 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.js中的全局错误处理函数errorHandler用法

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

    免费资源网 – https://freexyz.cn/

    声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。