vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > Vue errorHandler异常捕获

Vue errorHandler异常捕获

投稿:wdc

这篇文章主要介绍了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异常捕获内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

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