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 error
function something() {
if (Date.now()%2===1) {
console.log('当前时间为奇数, 可以执行任务')
} else { // 如果时间是偶数抛出异常, 由调用来处理
throw new Error('当前时间为偶数无法执行任务')
}
}
// 捕获处理异常
try {
something()
} catch (error) {
alert(error.message)
}
3. 错误对象
message属性: 错误相关信息<br /> stack属性: 函数调用栈记录信息