美文网首页
Promise - 03 promise 学习前准备:JS 中的

Promise - 03 promise 学习前准备:JS 中的

作者: 有情怀的程序猿 | 来源:发表于2020-02-17 15:19 被阅读0次

JS 中的 error 处理

1: 错误类型:
  • Error: 所有错误的父类型
    • ReferenceError: 引用的变量不存在
    • TypeError: 数据类型不正确的错误
    • RangeError: 数据值不再其允许范围之内
    • SyntaxError: 语法错误

常见内置类型

  • ReferenceError: 引用的变量不存在
console.log(a)

// 在 a 未被声明情况下 会报以下错误:
Uncaught ReferenceError: a is not defined

Uncaught: 未被处理 (没有被try catch)程序到这里不会被继续执行
ReferenceError:  错误类型,引用的变量不存在
"a is not defined" : 是错误信息 error message
  • TypeError: 数据类型不正确的错误
let b = null
console.log(b.x)

// 报错信息
Uncaught TypeError: Cannot read property 'x' of null

TypeError: 数据类型不正确的错误
"Cannot read property 'x' of null" :  不能在null 上获取x属性 
  • RangeError: 数据值不再其允许范围之内
// 比如一个递归
function fn () {
fn()
}
fn()

// 执行会报错
Uncaught RangeError: Maximum call stack size exceeded
RangeError:  数据值不再其允许范围之内

  • SyntaxError: 语法错误
const a = """

// 执行会报错
SyntaxError: Invalid or unexpected token
SyntaxError:语法错误
2: 错误处理
  • 捕获错误:try ... catch..
try {
  let d 
  console.log(d.xxx)
} catch (error) {
  console.log(error)
  console.log(error.message)
  console.log(error.stack)
}
  console.log('因为错误被捕获所以程序可以继续执行')

// 执行后会打印字符串 text

TypeError: Cannot read property 'xxx' of undefined
    at <anonymous>:3:15

VM11511:6 Cannot read property 'xxx' of undefined

VM11511:7 TypeError: Cannot read property 'xxx' of undefined
    at <anonymous>:3:15

因为错误被捕获所以程序可以继续执行
  • 抛出错误: throw error
function action (v) {
  if (v) {
  console.log('运行正常')
} else {
  throw new Error('运行报错,抛出异常')
  }
}

try{
  action(false)
}catch (e) {
  alert(e.message)
}


// 运行程序
Uncaught Error: 运行报错,抛出异常

3: 错误对象

message属性:错误相关信息
stack 属性:函数调用栈记录信息

相关文章