错误类型

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 的实例是没用的。