身处前端开发,有一点不得不承认,我们在开发项目的时候,四分之一的时间是在写功能,四分之三的时间是在调试及优化代码,虽然不想承认,但是确实无懈可击的代码都是在不断的优化完善中才会出现的。在介绍错误信息之前先简单说一下
try{
}catch(e){
}
本身没有什么难度,最试用的场景多属于和后台交互联调的时候,主要的最后就是将你认为可能会出错的代码放到try中,利用catch去捕捉错误信息。
新人的话基本上应该都没用过这样的方式,面试找工作的时候可能会碰到有面试官问你平时是如果调试错误代码的,这就是其中很重要的一个方式。
有一些逻辑错误在控制台其实并不会报错,或者告诉你哪行错误了,但是却捕捉不到错误信息,你只能一行一行去console或者打断点调试,这样是很浪费效率的,你查错的速度越快,那你解决问题的时间自然也就越短了。
try{
console.log("a");
console.log(b);
}catch(e){
console.log(e.name + ":" +e.message);
}
console.log("d")
上面的代码可知打印a字符是没有问题的,打印b时控制台会报Uncaught ReferenceError: b is not defined
错误名称 也就是ReferenceError 非法或不能识别的引用数值。
正常写代码的时候如果出现这样的错误的话,那这行语句下面的其余代码会停止执行,但是应用了try catch之后,并不会影响代码继续执行,也就是仍会打印出d。
这是打印结果:
关于try 和catch就说这么多,下面介绍一下我们代码的六种错误信息的名称。
1.EvalError : eval()的使用与定义不一致。 (基本碰不到,因为前端开发如非必要千万不要使用eval,原因自行百度)
2.RangeError :数值越界 。
3.ReferenceError : 非法或不能识别的引用数值。
4.SyntaxError : 发生语法解析错误。
5.TypeError : 操作数类型错误。
6.URIError : URI处理函数使用不当。
这里主要介绍一下最常见的第三种和第四种错误,你能弄清楚的话,基本上能解决百分之八十的错误。
当一个变量未经声明就使用的话就会报ReferenceError
例如 console.log(b),b并未定义就使用就报ReferenceError
同样b(),函数未定义就执行也会同样如此,如果在开发过程中,发现是变量的话,注意去查看变量是否是私有化变量,去进行修改变量的声明条件。
如果是函数或者对象等则需注意作用域效果范围,当然低级错误不包含在此种。
第四种错误就比较简单了,也是极其常见的错误。
fucntion test(){
:
}
我在函数test中写了一个中文的冒汗,函数我并没有调用,但是控制台仍然是抛出
SyntaxError: Unexpected token :
这是因为js代码在写好之后就会进行全篇语法分析,如果发生这种语法错误的话,就会告诉你这种代码是不希望你写的。常用调试可以直接锁定控制台后的代码行数位置去检查代码的错误,大部分的情况控制台提示的代码发生错误的位置都是准确的,当然也会有不准的时候,那就只能自己去检查上下文进行分析了。