FE

JavaScript 中的错误类型

2017-03-06  本文已影响93人  卿可津

注:本文最后更新时间:2017/03/06

前言:最近在重新翻看《你不知道的 JavaScript 》,在作用域一章中讲到了异常,提到了两种常见的错误类型。这里顺手将 js 的错误类型整理一下。

Error 类型

js 中的错误类型主要有以下 6 种:SyntaxError
TypeError
ReferenceError
RangeError
EvalError
URIError

这些错误类型继承自 Error
, 构造一个新的 Error 对象:

new Error([message[, fileName[, lineNumber]]])

当错误产生时,Error 的实例对象会被抛出。

6 种不同错误类型的示例

  1. SyntaxError:语法错误
123consloe.log(123)   // Uncaught SyntaxError: Unexpected identifier
console.123)          // Uncaught SyntaxError: Unexpected number
// 注意,下面这种不是语法错误:
consloe.log(123)      // Uncaught ReferenceError: consloe is not defined
  1. TypeError:类型错误,即值的类型非预期类型
// 下面的例子 a 为 number 类型,强行以函数方式调用 a
let a = 123;
a();                  // Uncaught TypeError: a is not a function
  1. ReferenceError:引用错误,引用一个不存在的变量
// RHS
let a = b;            // Uncaught ReferenceError: b is not defined
  1. RangeError:溢出错误,值超出了有效范围
let a = new Array(-1);  // Uncaught RangeError: Invalid array length
// 注意,下面这种不是溢出错误,因为数组是一种特殊的对象
let a = [1,2,3];
console.log(a[-1]);   // undefined
  1. EvalError:eval 函数执行错误。
    这个API 是为了向下兼容。现在 eval() 程序出错,引擎也会提示上面提到的具体错误,而不会抛出 EvalError,除非手动 new EvalError() 触发错误。

  2. URIError:URI 相关函数错误使用。

decodeURI('%1')        // Uncaught URIError: URI malformed
  1. 来自 MDN 的第七种错误,InternalError:JavaScript 引擎内部错误,大部分浏览器都没有实现这个 API
上一篇下一篇

猜你喜欢

热点阅读