在JavaScript中 try {} without catch {}

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (24)

我有一些函数返回一些东西或抛出一个错误。在主函数中,我调用其中的每一个函数,并希望返回每个函数返回的值,或者如果第一个函数引发错误,则继续执行第二个函数。

所以基本上我现在拥有的是:

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去除那些块,同时达到相同的效果?

提问于
用户回答回答于

不,你必须保留它们。

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

用户回答回答于

一个try没有赶上条款将其错误到下一个更高的catch,或窗口,

如果你没有catch,try语句需要finally子句。

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

扫码关注云+社区