栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Js自定义Error异常类型,与Vue全局异常捕获二者的妙用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Js自定义Error异常类型,与Vue全局异常捕获二者的妙用

用处

我想大家在Vue开发的过程中都会使用自己的提醒组件来对用户进行错误提示。
如使用element的message组件。

this.$message({
  	showClose: true,
  	message: '登录失败',
  	type: 'error'
});

当我们在代码里使用了特别多的提醒信息后代码会变的特别臃肿不易阅读,且后续如果想对提醒样式进行修改非常麻烦,因此我们可以使用Js自定义Error异常类型,与Vue全局异常捕获二者结合,实现统一提醒。

1. 自定义Error类型

参考:https://developer.mozilla.org/zh-CN/docs/Web/Javascript/Reference/Global_Objects/Error

function MyError(message) {
  	// 错误名称
	this.name = 'MyError';
  	// 错误消息
  	this.message = message || 'No Message';
  	this.stack = (new Error()).stack;
  	// 还可以根据自己需求增加额外参数...
}
// 继承组合原有Error属性
MyError.prototype = Object.create(Error.prototype);
MyError.prototype.constructor = MyError;
2. 将错误类型挂载到Vue上便于使用
Vue.prototype.MyError = MyError
// Vue3:app.config.globalProperties.MyError = MyError
3. 全局异常捕获

参考:https://cn.vuejs.org/v2/api/#errorHandler

// Vue3 使用 app.config
Vue.config.errorHandler = (err, vm, info) => {
    if(err.name === 'MyError') {
    	// 此处也可以直接单独引用message组件,我这里是用的挂载到vue上的message
    	vm.$message({
		  	showClose: true,
		  	message: err.message,
		  	type: 'error'
		});
    }else{
    	// 不是我们自定义错误的最好还是在控制台输出一下,以免出了问题都不知道
    	console.error(err)
    }
}
4. 使用

这样原来的代码就简化为了

throw new this.MyError('登录失败');

是不是就很简洁了呢,此处以element的message举例,大家也可根据自己需求修改。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/781236.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号