跳到主要内容

Promise的异常捕获问题

· 阅读需 1 分钟

Promise根据异常出现的位置不同采取的方案也不同

Promise内部抛出异常

通过then的第二个函数来捕捉异常。

// Promise的异常捕获问题
const promise = new Promise((resolve,reject) => {
throw new Error('test')
})

// 通过then的第二个函数来进行捕捉
promise.then(res => {
console.log(res);
},err => {
console.log(err); // [Error test]
})

Promise.then的第一个函数出现了异常

通过catch来捕捉Promise.then的第一个函数。

const promise = new Promise((resolve,reject) => {
resolve(666)
})

// 通过.catch进行捕捉
promise.then(res => {
throw new Error('test2')
},err => {
console.log(err);
}).catch(err => {
console.log(err); //[Error test2]
})