js中的异常报错

目录

1.异常的分类

2.捕获异常

3.手动抛出异常


1.异常的分类

在JS中,异常表现为一个对象,不同的对象表达了不同的异常类型,不同类型的异常对应到不同的错误。

异常类型含义
SyntaxError语法错误
ReferenceError引用错误,往往是使用了未定义的变量或函数
TypeError类型错误,往往是使用了一个对象中不存在的成员

每个异常都是一个对象,通过对应的构造函数创建。

所有的异常构造器都继承自Error。

当代码运行过程中出现错误时,JS会:

  1. 自动创建对应的异常对象,抛出错误。
  2. 程序终止运行。
  3. 控制台中会显示异常对象。

 每个异常对象都至少记录了两个关键信息:

  1. 错误消息描述:描述异常出现的原因;
  2. 调用堆栈信息:描述异常出现的位置。
function a(){
    console.log("a start")
    b()
    console.log("a end")
}

function b(){
    console.log("b start")
    c()
    console.log("b end")
}

function c(){
    console.log("c start")
    var a
    console.log(a.name)
    console.log("c end")
}

a()

 运行结果:

红色部分为报错信息,下面的 "at c (index.js:16:19)" 为堆栈信息。16代表第16行。

 2.捕获异常

捕获异常就是处理错误,当错误发生后,我们对错误进行相应的处理,让程序不至于终止。

try{
    // 代码1
}
catch(err){
    // 代码2:当代码1出现异常后,会执行这里的代码,异常对象会传递给err
    console.log(err.message) // 输出错误信息
}
finally{
    // 代码3:可省略。无论是否有异常,都会执行。
}

在绝大部分时候,我们都无须捕获异常,除非满足以下要求:

  1. 我们能够预知某段代码会出现异常
  2. 我们知道出现异常后要做什么

上面的条件任忘一个不满足,都不应该处理异常。

永远不能为了不报错而捕获异常!

3.手动抛出异常

 不仅浏览器会自动给我们抛出异常,我们还可以手动的抛出异常。

throw 异常对象 //当代码运行到这里,会终止执行,湛出异常对象,效果和浏览器抛出的销误完全一样

// 例:
throw new TypeError("类型错误")

当编写函数时,如果满足下面三个条件,就可以选择抛出异常:

  1. 预知执行过程中可能会出现某种错误;
  2. 浏览器不会抛出这个错误;
  3. 该函数无法处理这个错误。

 规范:如果某个函数需要抛出异常,一定要在函数的文档注释中阐述清楚。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猛扇赵四那半好嘴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值