JS错误类型的学习

(1)SyntaxError数组

SyntaxError是解析代码时发生的语法错误ide

// 变量名错误 
var 1a; 
// 缺乏括号 
console.log 'hello');

(2)ReferenceError函数

ReferenceError是引用一个不存在的变量时发生的错误。this

unknownVariable 
// ReferenceError: unknownVariable is not defined

另外一种触发场景是,将一个值分配给没法分配的对象,好比对函数的运行结果或者this赋值。spa

console.log() = 1 
// ReferenceError: Invalid left-hand side in assignment 
this = 1 
// ReferenceError: Invalid left-hand side in assignment

上面代码对函数console.log的运行结果和this赋值,结果都引起了ReferenceError错误code

(3)RangeErrororm

RangeError是当一个值超出有效范围时发生的错误。主要有几种状况,一是数组长度为负数,二是Number对象的方法参数超出范围,以及函数堆栈超过最大值。对象

new Array(-1) 
// RangeError: Invalid array length 
(1234).toExponential(21) 
// RangeError: toExponential() argument must be between 0 and 20

(4)TypeError开发

TypeError是变量或参数不是预期类型时发生的错误。好比,对字符串、布尔值、数值等原始类型的值使用new命令,就会抛出这种错误,由于new命令的参数应该是一个构造函数。字符串

new 123 
//TypeError: number is not a func 
var obj = {}; obj.unknownMethod() 
// TypeError: undefined is not a function

上面代码的第二种状况,调用对象不存在的方法,会抛出TypeError错误。

(5)URIError

URIError是URI相关函数的参数不正确时抛出的错误,主要涉及encodeURI()、decodeURI()、encodeURIComponent()、decodeURIComponent()、escape()和unescape()这六个函数。

decodeURI('%2') 
// URIError: URI malformed

(6)EvalError

eval函数没有被正确执行时,会抛出EvalError错误。该错误类型已经再也不在ES5中出现了,只是为了保证与之前代码兼容,才继续保留。

以上这6种派生错误,连同原始的Error对象,都是构造函数。开发者能够使用它们,人为生成错误对象的实例。

new Error("出错了!"); 
new RangeError("出错了,变量超出有效范围!");
new TypeError("出错了,变量类型无效!");

上面代码表示新建错误对象的实例,实质就是手动抛出错误。能够看到,错误对象的构造函数接受一个参数,表明错误提示信息(message)。

相关文章
相关标签/搜索