JS中常见的错误类型

1. 常见的错误类型

  • Error: 所有错误的父类型
  • ReferenceError: 引用的变量不存在
  • TypeError: 数据类型不正确的错误
  • RangeError: 数据值不在其所允许的范围内
  • SyntaxError: 语法错误
//1.ReferenceError
console.log(a);//ReferenceError: a is not defined

//2.TypeError
let b;
console.log(b.name);//TypeError: Cannot read property 'name' of undefined

//3.RangeError
function fn() {
  fn()//递归调用,但是我们并没有给它结束的条件
}
fn();//RangeError: Maximum call stack size exceeded(翻译:超出了最大调用堆栈大小)

//4.SyntaxError
//变量名不能以数字开头,会出现语法错误
let 111a;//SyntaxError: Invalid or unexpected token

2. 错误处理

  • 捕获错误: try ... catch

    try {
      let b;
      console.log(b.name);
    } catch (error) {
      console.log(error);//TypeError: Cannot read property 'name' of undefined
    }
    
  • 主动抛出错误: throw error

    function doSomething() {
      let arr = [2, 4, 5];
      arr.forEach(item => {
        if (item % 2 === 0) {
          console.log(item);
        } else {
          throw new Error('当前数字是奇数,无法处理');//抛出一个错误对象的主要目的是在外部对它进行处理
        }
      })
    }
    
    try {
      doSomething();
    } catch (e) {
      console.log(e);//Error: 当前数字是奇数,无法处理
    }
    

3. 错误对象error

error 其实是一个对象,当我们使用console.log(error) 打印 error 对象的时候,实际上打印出来的是它的 stack 属性

  • message属性: 错误相关信息
  • stack属性: 函数调用栈记录信息
  • name属性:错误类型的名称,如TypeError

那么怎么看到 error 对象的全貌呢?我们可以打一个断点,在浏览器控制台中查看。动图演示一下:

这是演示代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>error</title>
</head>
<body>

</body>
<script>
  try {
    let b;
    console.log(b.name);
  } catch (error) {
    console.log(error);
  }
</script>
</html>

在这里插入图片描述


4. 资料

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Error

前端学习交流QQ群,群内学习讨论的氛围很好,大佬云集,期待您的加入:862748629 点击加入

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值