vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > Vue.js全局错误处理函数errorHandler

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

作者:小新-alive

这篇文章主要介绍了Vue.js中的全局错误处理函数errorHandler用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

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

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

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

语法

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

errorHandler 函数接收三个参数:

示例:

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

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

需要注意的是,如果你在组件中定义了 errorCaptured 钩子函数来捕获错误,那么该组件的 errorCaptured 钩子函数将优先于全局的 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 ))
	}
}

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

总结

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

您可能感兴趣的文章:
阅读全文