在JS中你可以抛出新的Error(),抛出’foo’甚至抛出null.
你为什么要抛出一个非Error实例?我不是指从Error继承的对象 – 我的意思是其他随机对象或基元.
最佳答案 扔掉
throws an arbitrary expression.它没有以任何方式连接到
Error
object;你可以抛出任何表达.
但是从Error对象继承可能是一个更好的主意,这正是其他标准内置错误所做的:
EvalError
创建表示有关全局函数eval()的错误的实例.
InternalError
创建一个实例,表示在引发JavaScript引擎中的内部错误时发生的错误.例如. “过多的递归”.
RangeError
创建一个实例,表示当数字变量或参数超出其有效范围时发生的错误.
ReferenceError
创建表示取消引用无效引用时发生的错误的实例.
SyntaxError
创建表示在解析eval()中的代码时发生的语法错误的实例.
TypeError
创建表示变量或参数不是有效类型时发生的错误的实例.
URIError
创建一个实例,表示在encodeURI()或decodeURI()传递无效参数时发生的错误.
所有这些对象都是原型继承自Error对象,因此虽然抛出任意对象是合法的,但抛出Error对象或继承自Error的对象可能更有意义,就像Javascript本身一样.
在this MDN page,有几个正确的方法可以做到这一点.