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
上次更新: 2021/10/3 10:30:49
贡献者: wangdapan