【问题标题】:Do I need to `return` after `throw` in JavaScript?在 JavaScript 中的“throw”之后是否需要“return”?
【发布时间】:2014-11-21 21:57:57
【问题描述】:

我从我的一个方法中抛出了一个Error,我希望尽早退出,如下所示:

// No route found
if(null === nextRoute) {
    throw new Error('BAD_ROUTE');
}

我需要在我的throw 后面加上return; 声明吗?它现在对我有用。如果它是多余的,我宁愿不把它放进去,但我不能确定不同的浏览器会做什么。

【问题讨论】:

    标签: javascript exception error-handling


    【解决方案1】:

    您不需要在throw 之后放置return 语句,因为抛出异常会立即将控制权交还给调用者,因此永远不会到达return 行。

    【讨论】:

    • "抛出异常立即将控制权交还给调用者"...除非有一个 CATCH 来处理调用堆栈的任何路径中抛出的错误。
    • @Mahesh 我不确定您所说的“除非”是什么意思 - 堆栈中出现 throw 的任何 CATCH 都是“调用者”的一部分
    • 我在'throw new Error()'行之后有一个console.log,这个console.log正在执行。那为什么会这样呢?
    • 在 Firefox 88.0 ubuntu 20.04 中测试。 throw 确实终止了 function
    【解决方案2】:

    throw 语句引发用户定义的异常。 当前函数的执行将停止(throw 后的语句不会被执行),控制权将传递给调用堆栈中的第一个catch 块。如果调用函数之间不存在 catch 块,程序将终止。

    【讨论】:

      猜你喜欢
      • 2019-02-27
      • 1970-01-01
      • 1970-01-01
      • 2014-11-28
      • 1970-01-01
      • 2021-05-31
      • 1970-01-01
      • 1970-01-01
      • 2018-07-03
      相关资源
      最近更新 更多