javascript – 抛出非Error对象的用例是什么?

在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,有几个正确的方法可以做到这一点.

点赞