Javascript 除了使用函数,还有什么方法可以从表达式中抛出异常吗?

Javascript 除了使用函数,还有什么方法可以从表达式中抛出异常吗?,javascript,expression,statements,Javascript,Expression,Statements,除了放置抛出函数包装器之外,还有没有其他方法可以显式地从JavaScript中的表达式抛出异常 throw是一个语句,语句不生成值,因此它们不能用于对值进行操作并始终生成值的表达式中。很明显,任何语句都可以放在函数中,并且可以从表达式中使用函数调用。有没有办法避免将throw语句包装到函数中并直接从表达式中抛出 更新: 有些人说我不太清楚我在问什么。假设一个假设的例子不是真实的,这是我希望工作的,但它不是: var one = value != null ? value * value : (t

除了放置抛出函数包装器之外,还有没有其他方法可以显式地从JavaScript中的表达式抛出异常

throw是一个语句,语句不生成值,因此它们不能用于对值进行操作并始终生成值的表达式中。很明显,任何语句都可以放在函数中,并且可以从表达式中使用函数调用。有没有办法避免将throw语句包装到函数中并直接从表达式中抛出

更新:

有些人说我不太清楚我在问什么。假设一个假设的例子不是真实的,这是我希望工作的,但它不是:

var one = value != null ? value * value : (throw new Error('The value has not been provided'));

var two = value != 0 ? 1 / value : (throw new Error('The result cannot be evaluated because the value is zero which would give a division by zero problem.));
不可以。正如您所说,throw是一个语句,语句不能作为表达式的一部分出现

从表达式的求值执行语句的唯一方法是函数调用或eval。使用THROWnew Error…函数可能是您能得到的最好的

但认真地说,用简单易读的语句:

if (value == null) throw new Error('The value has not been provided');
var one = value * value;

if (value == 0) throw new Error('division by zero");
var two = 1 / value;

这不仅有效,而且适合一条直线。

是的,你可以从三元曲线上扔!也许有人会说我的解决方案有点像黑客,但道理很简单


你真正的问题还不清楚。抛出0有什么问题?您能举个例子或澄清一下您的意思吗?为什么要直接从表达式中抛出?您只会在某些条件下抛出-那么为什么不使用if/else或try/catch块呢?。。。你是在要求一行检查吗?注意:我要求澄清,我并不是说这个问题不好。所以+1.更新了两个假设示例。是否有抛出的throw语句的表达式对应项?否。有一些表达式在求值过程中抛出typeerrors等,但没有要抛出的表达式对应项。
var two = value != 0 ? 1 / value : (void 0).throwDivideByZero()