标题二十一、错误处理
1、常见的错误
**语法错误**:SyntaxError :代码是书写不符合语法规范,例如出现了中文符号,缺少半块括号……
**引用错误**:ReferenceError:使用了未声明的变量
**类型错误**:TypeError:调用的函数或者方法不是一个函数类型
**自定义错误**:程序员自己指定的错误
| //语法错误
| //缺少半块括号
| //if(1){ //SyntaxError: Unexpected end of input
| //中文分号
| //console.log(2);//SyntaxError: Invalid or unexpected token
|
|
| //引用错误
| var a=1
| console.log(a1) //ReferenceError: a1 is not defined
|
|
| //类型错误
| var arr=[5,56,89]
| //revarse 书写错误
| //arr.revers() //TypeError: arr.revers is not a function
| console.log(arr.reverse) //[Function: reverse]
|
|
| var age=83
| //如果年龄不在18~60之间,抛出自定义错误
| if (age<18||age>60)
| {
| throw'非法年龄'
| }
| /* 结果
| throw'非法年龄'
| ^
| 非法年龄
| (Use `node --trace-uncaught ...` to show where the exception was thrown)
| */
2、错误处理
**即使出现了错误,也不会影响后续代码**
| try {
| 尝试执行,可能有错,出错后不影响后续代码执行
| } catch ( err ) {
| 捕获 try 中的错误,将错误手机到 err中
| 解决错误
| }
| var arr=[5,56,89]
| //翻转数组元素
| //尝试执行,可能会出现错误,出错后不会阻止后续代码
| try{
| arr.revers()
| }catch(err){
| //捕获错误,只有try中出现错误才会执行
| //err:形参,用于收集错误信息
| //console.log(err) //TypeError: arr.revers is not a function at Object.<anonymous> (D:\study\JS\对象\20_error.js:40:9)
| //捕获错误是为了解决问题
| arr.reverse()
| }
| console.log(arr) //[ 89, 56, 5 ]
| //创建函数getDays,传递任意一个日期,返回这个日期是一年中方的第几天
| // 2022/5/28
| function getDays(year,month,day){
| //2月份天数:判断传递的年份是否未闰年
| var two=year%4==0&&year%100!==0 || year%400==0 ? 29 :28
| //把每个月的天数放到数组中
| var arr=[31,two,31,30,31,30,31,31,30,31,30,31]
| //声明变量保存总和,初始值用当前月份的天数
| sum=day
| //循环获取前几个月的天数,求和
| for (var i=0;i<month-1;i++ )
| {
| //i代表前几个月的天数
| //arr[i] 每个月的天数
| //sum=sum+arr[i]
| //console.log(i,arr[i])
| sum=sum+arr[i]
| }
| //返回总的天数
| return sum
| }
| console.log(getDays(2022,5,18)) //138