【问题标题】:Catching multiple async errors捕获多个异步错误
【发布时间】:2020-12-08 10:51:55
【问题描述】:

我正在尝试解决我的代码的问题。我有一个抛出错误的函数,我正在尝试处理它,但由于某种原因,我的 try/catch 块不会捕获错误。我认为它抛出了两个错误,因为它确实进入了 catch 块,但控制台仍然显示错误消息。有什么办法可以解决这个问题吗?谢谢

try{
    await renameItem(myID, newName); //The error is triggered by this line
} catch(error) {
   console.log("There was an error");
   await renameItem(myID, oldName);
   return;
}

ETA renameItem 函数将一些数据发布到另一个函数,该函数验证数据并将其放入数据库。如果数据无效,则会引发异常。

【问题讨论】:

  • 这也取决于你的 renameItem 函数中的代码

标签: javascript typescript error-handling async-await try-catch


【解决方案1】:

如果没有看到您的 renameItem 定义,就很难诊断问题。但是,控制台中显示错误的原因是您的 try/catch 不会处理 catch 块中的错误。您必须将对 renameItem 的调用包装在 catch 块中的 try/catch 中,这并不理想。我建议在 renameItem 函数中移动您的 try/catch 逻辑,并在失败时需要额外操作时在该范围内处理错误。此外,如果此方法的目的是简单地重命名一个项目,并且重命名失败,您不应该重置旧名称。如果持久化到数据库,则尤其如此。如果数据库更新失败,则没有任何变化。

【讨论】:

  • 好的,谢谢,我会尝试将它移到函数中,看看是否可以解决它。
  • 如果您需要更多帮助,请发布您的 renameItem 定义。
猜你喜欢
  • 2020-10-01
  • 2015-05-31
  • 2018-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-09
  • 2019-02-11
  • 2021-10-20
相关资源
最近更新 更多