Skip to content

await 错误处理

try catch

javascript
let p = new Promise((resolve, reject) => {
  setTimeout(() => {
    // resolve('ok')
    reject(new Error("error"));
  }, 1000);
});

// 1. try catch
try {
  let res = await p;
  console.log(res);
} catch (error) {
  console.log(error); // Error: error
}

.catch (推荐)

javascript
let p = new Promise((resolve, reject) => {
  setTimeout(() => {
    // resolve('ok')
    reject(new Error("error"));
  }, 1000);
});

// 2. then catch
let res = await p.catch((err) => {
  console.log(err, 11); // Error: error
  return "error_info";
});

console.log(res); // error_info

全局捕获 error 框架

javascript
onErrorCaptured; // 钩子

// 全局捕获
Vue.config.errorHandler = function (err, vm, info) {
  // err 是错误对象
  // vm 是触发错误的组件实例
  // info 是错误信息,如错误发生的生命周期钩子等
  console.error("全局错误捕获:", err);
  console.log("错误信息:", info);
};

// 路由守卫 错误
router.beforeEach((to, from, next) => {
  try {
    // 路由守卫逻辑
    next();
  } catch (error) {
    console.error("路由守卫错误:", error);
    next(false);
  }
});

made with ❤️ by ankang