除了将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.));
答案 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)
是的,你可以扔掉三元!也许有些人可能会把我的解决方案称为有点黑客攻击,但理由很简单。
var two = value != 0 ? 1 / value : (void 0).throwDivideByZero()