【JS篇之】异常

前言:在代码编写过程中,最常遇到的就是程序异常。其实异常并非坏事,它可以让开发人员及时发现、定位到错误,提醒我们做正确的事情,甚至在某些时候,我们还会手动抛出异常。

1.异常的分类

在JS中,异常表现为一个对象,不同的对象表达了不同的异常类型,不同类型的异常对应的是不同的错误,以下列举了几个最常见的异常类型:

异常类型含义例子
SyntaxError语法错误在这里插入图片描述
ReferenceError引用错误,往往是引用了未定义的变量或函数在这里插入图片描述
TypeError类型错误,往往是使用了一个对象中不存在的成员在这里插入图片描述

从例子中可以看出每个异常对象都至少记录了两个关键信息:

  1. 错误信息描述:描述异常出现的原因
  2. 调用位置信息:描述异常出现的位置

2. 捕获异常

捕获异常就是处理错误,当错误发生后,我们对错误进行相应的处理,让程序不至于因为某部分代码报错而终止,导致页面卡死或者崩溃(白屏)。

try {
	// 代码1
}
catch(error) {
	// 代码2:当代码1出现异常后,会执行这里的代码,异常对象会传递给参数error
}
finally {
	// 代码3: 可以省略不写,因为无论是否有异常都会执行这里的代码
}

// 无异常的执行顺序:代码1 --> 代码3
// 有异常的执行顺序: 代码1 --> 出现异常,中断代码1的执行 --> 执行代码2 --> 执行代码3

在绝大部分时候,我们都无须捕获异常,除非已经预知到某段代码在某些场景下会出现异常,并且我们知道出现异常后要做些什么。
例如:当网络断线或者服务器宕机时,接口响应报错,捕获到错误之后给用户弹出友好性的提示语。

3. 手动抛出异常

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

throw 异常对象; // 当代码运行到这里,会终止执行,同时抛出异常对象,显示效果和浏览器抛出的错误一样

在这里插入图片描述
下面举例一个需要抛出异常的场景:

/**
 * 得到两个数字之和
 * 若传参不是数字,则抛出TypeError
 * @param {number} a 数字1
 * @param {number} b 数字2
 * @return {number} 两数之和
 */
function sum(a, b) {
  if (typeof a != "number" || typeof b != "number") {
    throw new TypeError("必须传入两个数字才能求和");
  }
  return a + b;
}

⚠️注:如果某个函数需要抛出异常,最好在文档注释中阐述原因。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值