gpt4 book ai didi

javascript - 重新抛出 promise catch 中的错误

转载 作者:IT王子 更新时间:2023-10-29 02:53:21 28 4
gpt4 key购买 nike

我在教程中找到了以下代码:

promise.then(function(result){
//some code
}).catch(function(error) {
throw(error);
});

我有点困惑:catch 调用有什么作用吗?在我看来,它没有任何效果,因为它只是抛出了被捕获的相同错误。我基于常规 try/catch 的工作原理。

最佳答案

如您所见,赤裸裸的 catch 和 throw 毫无意义。除了添加代码和减慢执行速度外,它没有做任何有用的事情。所以,如果你要 .catch() 并重新抛出,在 .catch() 中应该有你想做的事情,否则你应该删除.catch() 完全。

该通用结构的通常要点是当您想要在 .catch() 中执行某些操作时,例如记录错误或清理某些状态(如关闭文件),但您想要 promise 链继续被拒绝。

promise.then(function(result){
//some code
}).catch(function(error) {
// log and rethrow
console.log(error);
throw error;
});

在教程中,它可能只是为了向人们展示他们可以在哪里捕获错误或教授处理错误然后重新抛出错误的概念。


捕获和重新抛出的一些有用原因如下:

  1. 您想记录错误,但保持 promise 链被拒绝。
  2. 您想将错误转化为其他错误(通常是为了在链的末端更轻松地处理错误)。在这种情况下,您将重新抛出一个不同的错误。
  3. 您想在 promise 链继续之前进行一系列处理(例如关闭/释放资源),但您希望 promise 链保持被拒绝状态。
  4. 如果出现故障,您希望在 promise 链的这一点上为调试器设置断点
  5. 您想处理一个特定错误或一组错误,但重新抛出其他错误,以便它们传播回调用者。

但是,在 catch 处理程序中没有其他代码的情况下,简单地捕获并重新抛出相同的错误对代码的正常运行没有任何用处。

关于javascript - 重新抛出 promise catch 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42167274/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com