try {} without catch {} 可以在 JavaScript 中使用吗?

新手上路,请多包涵

我有许多函数要么返回某些东西,要么抛出错误。在主函数中,我调用了其中的每一个,并希望返回每个函数返回的值,或者如果第一个函数抛出错误则继续第二个函数。

所以基本上我目前拥有的是:

 function testAll() {
    try { return func1(); } catch(e) {}
    try { return func2(); } catch(e) {} // If func1 throws error, try func2
    try { return func3(); } catch(e) {} // If func2 throws error, try func3
}

但实际上我只想 try 返回它(即如果它不抛出错误)。我不需要 catch 块。但是,像 try {} 这样的代码会失败,因为它缺少一个(未使用的) catch {} 块。

在 jsFiddle 上举了一个例子

那么,有没有办法在达到相同效果的同时删除那些 catch 块?

原文由 pimvdb 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 582
2 个回答

不,你必须保留它们。

这实际上是有道理的,因为根本不应该默默地忽略错误。

原文由 ThiefMaster 发布,翻译遵循 CC BY-SA 3.0 许可协议

没有 catch 子句的 try 将其错误发送到下一个更高的 catch 或窗口,如果该 try 中没有定义 catch。

如果您没有 catch ,则 try 表达式需要一个 finally 子句。

 try {
    // whatever;
} finally {
    // always runs
}

原文由 kennebec 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题