JavaScript错误处理
- 语法错误、运行时错误、以及其解决方案
- 逻辑错误及debugger的使用
- try catch finally语句的使用
语法错误
- 符号漏打、多打、少打、错打
- 使用了不合法的变量名(保留字、关键字)
- 语句写错、语句没写完
不符合Js语法的错误,出现语法错误,控制台会进行报错并告知出错的行号(但行号不一定准确)
- unexpected token指的就是Js中的一个符号或者几个符号的组合
- 为什么第三张图没有报,应该改为;是因为在Js语法中,是一个合法的表达式,[i<10,i++]就被认为是一个合法的表达式,逗号表达式将会返回最后一个逗号后面表达式的结果
- 参数可以传函数的所以 console.log(function 到这里都是正确的
运行时错误
Runtime Error:指代码没有语法错误而在运行时候才发生的错误,运行时错误是一个统称
常见的运行时错误
- ReferenceError:未捕获到的引用错误,变量引用异常时触发
- TypeError:类型使用错误时触发或者获取未初始化的变量的属性或方法
- RangeError:不太常见,一般会在递归爆栈时触发,即递归深度太深(浏览器一般最多1024层)
-
call stack:调用栈
-
如上会形成一个等待的序列 ,这种序列我们称为调用栈
-
避免递归的写法
区分语法与运行时错误就是 语法错误无论如何都不可能运行成功,运行时错误有可能运行成功
逻辑错误:运行结果不符合预期,都会使用断点调试进行跟踪
- watch中可以访问到当前作用域中的变量值
- debugger 能够在js执行时阻止往下执行
处理代码异常的语句
- 当发生一些不可避免的错误时,可以使用下面的语句来抛出这个错误
throw 语句
-
用户体验不是很好
-
Js中NAN是不等于他自己的
-
如果一个值不等于他自己那么他就是NaN
-
如果走到了throw,会往外找最近的try语句(错误的冒泡),扔出的错误对象会被catch变量接住