1. 错误的类型
1.1 Error: 所有错误的父类型
**ReferenceError**: 引用的变量不存在<br /> **TypeError**: 数据类型不正确的错误<br /> **RangeError**: 数据值不在其所允许的范围内<br /> **SyntaxError**: 语法错误
1.2 ReferenceError: 引用的变量不存在
// 1). ReferenceError: 引用的变量不存在// console.log(a) // ReferenceError: a is not defined// console.log('-----') // 没有捕获error, 下面的代码不会执行
1.3 TypeError: 数据类型不正确的错误
// TypeError: 数据类型不正确的错误// let b// // console.log(b.xxx) // TypeError: Cannot read property 'xxx' of undefined// b = {}// b.xxx() // TypeError: b.xxx is not a function
1.4 RangeError: 数据值不在其所允许的范围内
// RangeError: 数据值不在其所允许的范围内// function fn() {// fn()// }// fn() // RangeError: Maximum call stack size exceeded
1.5 SyntaxError: 语法错误
// SyntaxError: 语法错误// const c = """" // SyntaxError: Unexpected string
2. 错误处理
捕获错误: try ... catch<br /> 抛出错误: throw error
// 捕获错误: try ... catch// try {// let d// console.log(d.xxx)// } catch (error) {// console.log(error.message)// console.log(error.stack)// }// console.log('出错之后')
// 抛出错误: throw errorfunction something() {if (Date.now()%2===1) {console.log('当前时间为奇数, 可以执行任务')} else { // 如果时间是偶数抛出异常, 由调用来处理throw new Error('当前时间为偶数无法执行任务')}}// 捕获处理异常try {something()} catch (error) {alert(error.message)}
3. 错误对象
message属性: 错误相关信息<br /> stack属性: 函数调用栈记录信息
