除了使用函数之外,还有从表达式中抛出异常的方法吗?

时间:2014-07-18 14:16:32

标签: javascript expression statements

除了将throw放在函数包装器上之外,有没有办法从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.));

2 个答案:

答案 0 :(得分:0)

没有。如你所说,throw是一个陈述,陈述不能作为表达式的一部分出现。

从表达式求值中执行语句的唯一方法是函数调用或eval。使用THROW(new 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;

这不仅有效,而且符合要求。

答案 1 :(得分:0)

是的,你可以扔掉三元!也许有些人可能会把我的解决方案称为有点黑客攻击,但理由很简单。

throw from a ternary

var two = value != 0 ? 1 / value : (void 0).throwDivideByZero()