问题

今天在开发微信小程序的时候首次用了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捕获处理了)
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐