错误类型
JavaScript 中有六个特定的核心错误构造函数:
-
EvalError
- 创建一个实例,表示关于全局函数eval()
发生的错误。 -
InternalError
- 创建一个实例,表示在引发 JavaScript 引擎中的内部错误时发生的错误。例如过多的递归。 (仅受 Mozilla Firefox 支持 ) -
RangeError
- 创建一个实例,表示当数字变量或参数超出其有效范围时发生的错误。 -
ReferenceError
- 创建一个实例,表示解除引用无效引用时发生的错误。 -
SyntaxError
- 创建一个实例,表示在解析eval()
中的代码时发生的语法错误。 -
TypeError
- 创建一个实例,表示当变量或参数不是有效类型时发生的错误。 -
URIError
- 创建一个实例,表示当encodeURI()
或decodeURI()
传递无效参数时发生的错误。
如果你正在实现错误处理机制,你可以检查从代码中捕获的错误类型。
try {
throw new TypeError();
}
catch (e){
if(e instanceof Error){
console.log('instance of general Error constructor');
}
if(e instanceof TypeError) {
console.log('type error');
}
}
在这种情况下,e
将是 TypeError
的一个实例。所有错误类型都扩展了基础构造函数 Error
,因此它也是 Error
的一个实例。
牢记这一点向我们表明,在大多数情况下,将 e
视为 Error
的实例是没用的。