error 处理
import Vue from "vue";
//非asycn形式异常
const errorHandler = (error, vm) => {
vm.$message({
type: "error",
message: `页面发生错误,请联系管理员`,
});
console.error(error);
};
Vue.config.errorHandler = errorHandler;
Vue.prototype.$throw = (error) => errorHandler(error, this);
Vue.config.asyncErrorHandler = (error, vm) => {
vm.$message({
type: "error",
message: `页面请求的过程中发生错误,请联系管理员`,
});
console.error(error);
};
Vue.mixin({
beforeCreate() {
const methods = this.$options.methods || {};
Object.keys(methods).forEach((key) => {
let fn = methods[key];
this.$options.methods[key] = function (...args) {
let result = fn.apply(this, args);
if (result && typeof result.catch === "function") {
let vm = this;
return result.catch(function (error) {
Vue.config.asyncErrorHandler(error, vm);
});
} else {
return result;
}
};
});
},
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38