1.error-plugin.js
/* eslint-disable no-param-reassign */
/**
* 全局异常处理
* 对 Promise 异常作出处理
*/
const errorHandler = (error, vm, info) => {
if (error === 'cancel') {
// element ui confirm 取消操作,并份真实异常
console.info('cancel element confirm');
return;
}
console.error('>>>>>>>>>>『全局异常 统一处理』<<<<<<<<<<');
console.error(error);
console.error(vm, info);
};
const GlobalError = {
install: (Vue) => {
/**
* 全局异常处理
* @param {
* } error
* @param {*} vm
*/
Vue.config.errorHandler = errorHandler;
Vue.mixin({
beforeCreate() {
const methods = this.$options.methods || {};
Object.keys(methods).forEach((key) => {
//获取方法名
const fn = methods[key];
//重写整个方法
methods[key] = function resetMethod(...args) {
//拿到方法的返回值
const ret = fn.apply(this, args);
//如果是promise方法
if (ret && typeof ret.then === 'function' && typeof ret.catch === 'function') {
//捕捉异常
return ret.catch(errorHandler);
}
return ret;
};
});
},
});
Vue.prototype.$_throw = errorHandler;
},
};
export default GlobalError;
2.main.js
import GlobalError from './error-plugin.js'
Vue.use(GlobalError)
3.使用
use.vue
methods:{
use(){
return this.$post(JSON.stringify(parame1)).then(result => {
if (result.errorCode == ERROR_CODE && result.data.codeType=='200') {
console.log('查看记录成功',result)
this.endLookId=result.data.lookId;
}
});
}
}