2020-08-31 try catch可以捕获到promise的异常吗

  1. try catch可以捕获到promise的异常吗

先说结果:答案是不能

try-catch 主要用于捕获异常,注意,这里的异常,是指同步函数的异常,**如果 try 里面的异步方法出现了异常,此时catch 是无法捕获到异常的,原因是因为:当异步函数抛出异常时,对于宏任务而言,执行函数时已经将该函数推入栈,此时并不在 try-catch 所在的栈,所以 try-catch 并不能捕获到错误。**对于微任务而言,比如 promise,promise 的构造函数的异常只能被自带的 reject 也就是.catch 函数捕获到。

这里就有个问题了:为啥try catch可以捕获到async await的异常呢

此时应该回想下之前做事件循环的练习题,微任务await之后的代码是不会执行的,一直等到取到值才会执行,
在这里插入图片描述
那么就相当于同步的代码了,所以是可以捕获到的

你可能感兴趣的:(keep)