目录
- 异常的概念
- 处理异常
一、异常概念
1.1 异常简介
-
在生活中,异常可以理解为赶飞机途中堵车,堵车就是赶飞机计划中的异常(意外的情况),我们可以将会导致计划不会执行的意外情况统称为异常。
-
在程序中,导致程序崩溃或终止的意外的情况,就可以理解为异常(简单理解为程序出的错误-error).
-
在不同编程语言中,都会有表示异常的数据,比如JavaScript会以Error对象来表示程序中出的错误信息。
-
实际期望:
- 程序哪怕在报错之后也可以捕获并处理错误,同时可以让程序继续运行。
二、try-catch: 处理异常
2.1 使用语法
-
目的:实现能够处理程序中报错并能够继续的执行程序
-
语法
try{ //包含可能会拨错的代码} catch(error){ //当try里的代码报错是会执行这里的代码,执行后会继续执行try-catch代码块后续的代码。}
-
特点
- 当try里的代码报错后会执行catch中的代码,执行后会继续执行try-catch代码块后续的其他代码
-
原理
- try-catch本质是JavaScript会监听try里 所有代码,一旦发生错误会跳转到catch中并执行,并处理掉该错误,方便程序继续运行。但是监听代码是有性能开销,try里的代码越多,性能消耗就越大,直观体验,就是服务器反应慢。
2.2 例子:服务器编程
-
在分页查询时,用户如果输入不合法的页数,可能会导致程序报错,服务器崩溃。为了保证服务器的稳定性,可以使用try-catch对分页业务代码进行包裹
//分页查询 router.get("/findByPage",async function(req,res){ try { let {pageNum,pageSize} = req.query; //分页查询 // 跳过的数量; (pageNum - 1) * pageSize let result = await movieTypesModel.find().skip((pageNum - 1) * pageSize).limit(pageSize); res.send({code:200,message:'分页查询成功',data:result}) } catch (error) { console.log('报错来源',error); //告诉用户参数有问题 res.send({code:-1,message:'分页查询失败,参数有误'}) } })