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);
}
});