trycatch:同步任务使用trycatch包裹,抛出错误后,并不影响后续逻辑代码的执行
console.log(99995);
try {
throw Error('出错了')
} catch (err) {
console.log(99996, err);
}
console.log(99997);
promise抛出错误后并不会影响后续同步任务的执行
console.log(99995);
Promise.reject(Error('出错了'))
console.log(99997);
promise抛出错误后可以由.catch捕捉到
new Promise((resolve, reject) => {
console.log('同步任务开始,99980');
reject(Error('出错了,99982'))
}).catch(err => {
console.log(err, 99984);
})
trycatch捕捉不到异步任务抛出的错误,promise
try {
new Promise((resolve, reject) => {
console.log('同步任务开始,99980');
reject(Error('出错了,99982'))
})
} catch (error) {
console.log(error, 99983);
}
trycatch也捕捉不到async抛出的错误
async function test() {
throw Error('出错了')
}
try {
console.log(999980);
test()
console.log(999981);
} catch (error) {
console.log(error, 999982);
}
console.log(999983);
trycatch可以捕捉到async和await抛出的错误
async function test() {
throw Error('出错了')
}
try {
console.log(999980);
await test()
console.log(999981);
} catch (error) {
console.log(error, 999982);
}
console.log(999983);
总结
try catch可以捕捉同步任务抛出的错误 promise的catch可以捕捉异步任务抛出的错误 async关键字声明异步函数,在经过await处理后,抛出的错误可以被trycatch捕捉到