catch块是否捕获JavaScript中已捕获的异常?

时间:2018-10-10 16:38:09

标签: javascript error-handling try-catch

try {
    await function1()
    await function2()
    await function3().catch(err => { /*...*/ })
} catch (err) { /*...*/ }

我的问题是,即使已经通过catch“捕获”了该异常,function3块是否也捕获了.catch(err => ...)发出的异常?


如果catch块捕获到function3的异常,我的问题是如何防止这种行为?

我的目标基本上是捕获那些函数的特定异常,并对每个未处理的异常使用catch块。

3 个答案:

答案 0 :(得分:5)

一旦“发现”错误,它就不会传播。如果您希望错误进一步加剧,则必须在捕获到一次错误后抛出一些错误。像这样:

try {
  await function1();
  await function2();
  await function3().catch(err => {
    function3ErrorHandler(err);
    throw err;
  });
} catch (err) {
  generalErrorHandler(err);
}

答案 1 :(得分:1)

如果您的外部方法中的catch块已经在function3中捕获,则不会捕获fuction3引发的异常。

答案 2 :(得分:1)

logic behind the try catch

它将首先触发:

await function3().catch(err => { /*...*/ }) 

触发之前:

} catch (err) { /*...*/ }