在Javascript表达式中使用throw

And*_*rio 12 javascript throw node.js

这是我想要做的:

var setting = process.env.SETTING || throw new Error("please set the SETTING environmental variable");
                                     ^^^^^
Run Code Online (Sandbox Code Playgroud)

但是翻译抱怨"语法错误:意外的令牌抛出".

有没有办法在同一行中抛出异常,我们比较一个值是否为假?

cas*_*nca 19

throw是一个语句,而不是表达式,因此您不能将它用作另一个表达式的一部分.你必须分开它:

var setting = process.env.SETTING;
if (!setting) throw new Error("please set the SETTING environmental variable");
Run Code Online (Sandbox Code Playgroud)


Koo*_*Inc 15

您可以利用javascript的功能特性:

var setting = process.env.SETTING || 
               function(){ 
                 throw "please set the SETTING environmental variable";
               }();
// es201x
var setting = process.env.SETTING || 
              (() => {throw `SETTING environmental variable not set`})();
Run Code Online (Sandbox Code Playgroud)

或更通用创建一个函数来抛出错误并使用它:

function throwErr(mssg){
    throw new Error(mssg);
}

var setting = process.env.SETTING || 
               throwErr("please set the SETTING environmental variable");
Run Code Online (Sandbox Code Playgroud)

  • +1 是一个有趣的解决方案,尽管它看起来有点矫枉过正。 (2认同)

NH.*_*NH. 5

有一个草案提案将 throw 表达式(类似于 C# 7 的throw 表达式)引入 JavaScript/ECMAScript:

TC39 提案:抛出表达式

  • GitHub 链接:https://github.com/tc39/proposal-throw-expressions (3认同)