问题
今天在开发微信小程序的时候首次用了async/await处理异步请求。在开发过程中通过网络查找发现大部分博客对于Promise方法捕获异常都写着:
1.不使用await:
//直接使用.catch捕获
promiseFunction()
.then()
.catch(err=>{
console.log(err)
})
2.使用await:
//使用try catch捕获
try{
let res = await promiseFunction()
}catch(error){
console.log(error)
}
看了大部分博客之后就产生一个疑惑:
如果想使用await但捕获异常只想用.catch()捕获行不行得通呢?
结论
经过测试,得出以下结论
await可与.catch()同时使用。try/catch 能捕获所有异常, .catch只能捕获异步方法中reject错误
也就是说,如果只想捕获 异步方法中reject错误的话,在使用await的同时使用.catch()就能捕获到。但捕获不到reject之外的异常。
如下图:
1.同时使用捕获到了reject异常:
2.捕获不到reject之外的异常,直接报错:
(这种情况就需要使用try/catch捕获处理了)