JavaScript错误对象

您将在JavaScript中找到各种错误对象

JavaScript gives us 8 错误对象,根据错误类型在try / catch表达式中引发:

  • Error
  • EvalError
  • RangeError
  • ReferenceError
  • SyntaxError
  • TypeError
  • URIError

让我们分析其中的每一个。

Error

这是一般错误,也是所有其他错误对象继承的错误。您将永远不会看到的实例Error直接,而是JavaScript触发了上面列出的其他错误之一,这些错误继承自Error

它包含2个属性:

  • message:错误描述,易于理解的消息,应解释发生了什么错误
  • name:发生错误的类型(假设特定错误对象名称的值,例如,TypeError或者SyntaxError

并只提供一种方法toString(),它负责根据错误生成有意义的字符串,该字符串可用于将其打印到屏幕上。

EvalError

此错误是在现代JavaScript中定义的,但实际上从来没有被JavaScript抛出,并且出于兼容性目的而保留。它是在ECMAScript 3中定义的,但是自ECMAScript 5.1开始,它就没有出现在标准中。

它用来表示全局功能eval()用法不正确,其定义不兼容。

RangeError

一种RangeError当数字值不在其允许值范围内时将触发。

最简单的示例是将数组长度设置为负值时:

[].length = -1 //RangeError: Invalid array length

或将其设置为大于4294967295

[].length = 4294967295 //4294967295
[].length = 4294967296 //RangeError: Invalid array length

(此魔术数字在JavaScript规范中指定为32位无符号整数的最大范围,等效于Math.pow(2, 32) - 1

以下是您可以在野外发现的最常见范围错误:

ReferenceError

一种ReferenceError表示已检测到无效的参考值:JavaScript程序正在尝试读取不存在的变量。

dog //ReferenceError: dog is not defined
dog = 2 //ReferenceError: dog is not defined

请注意,以上声明将创建一个dog全局对象上的变量(如果未运行)严格模式

以下是您可以在野外发现的最常见参考错误:

SyntaxError

一种SyntaxError在程序中发现语法错误时引发。

以下是一些生成语法错误的代码示例。

没有名称的函数语句:

function() {
  return 'Hi!'
}
//SyntaxError: function statement requires a name

对象属性定义后缺少逗号:

const dog = {
  name: 'Roger'
  age: 5
}
//SyntaxError: missing } after property list

以下是您可以在野外发现的最常见的语法错误:

TypeError

一种TypeError当值的类型与预期的类型不同时,会发生这种情况。

最简单的示例是尝试调用数字:

1() //TypeError: 1 is not a function

以下是您可以在野外发现的最常见的类型错误:

URIError

调用与URI一起使用的全局函数之一时,会引发此错误:

  • decodeURI()
  • decodeURIComponent()
  • encodeURI()
  • encodeURIComponent()

并传递无效的URI。

免费下载我的JavaScript初学者手册


更多js教程: