JavaScript高级程序设计学习笔记--错误处理与调试

时间:2021-11-12 00:21:39

try-catch语句

只要代码中包含finally子句,则无论try或catch语句块中包含什么代码--甚至return语句,都不会阻止finally子句的执行,来看下面这个函数:

 function testFinally(){
try{
return ;
}catch(error){
return ;
}finally{
return ;
}
}

调用这个函数会返回0(PS:但我实际执行的时候会先返回0,再返回2)

抛出错误

与try-catch语句相配的还有一个throw操作符,用于随时抛出自定义错误。抛出错误时,必须要给throw操作符指定一个值。

throw 12345;
throw "Hello world!";

类型转换错误

类型转换错误发生在使用某个操作符,或者使用其他可能会自动转换值的数据类型的语言结构时。在使用相等(==)和不相等(!=)操作符,或者if、for及while等流控制语句中使用
非布尔值时,最常发生类型转换错误。
多数情况下,我们建议使用全等(===)和不全等(!==)操作符,以避免类型转换。来看一下例子:

alert(5=="5"); //true
alert(5==="5"); //false
alert(1==true); //true
alert(1===true); //false

使用全等和非全等操作符,可以避免发生因为使用相等和不相等操作符引发的类型转换错误,因此我们强烈推荐使用。

数据类型错误

添加一条简单的类型检测语句,就可以确保函数不那么容易出错。

 function getQueryString(url){
if(typeof url=="string"){ //通过检查类型确保安全
var pos=url.indesOf("?");
if(pos>-1){
return url.substring(pos+1);
}
}
}

大体上来说,基本类型的值应该使用typeof来检测,而对象的值则应该使用instanceof来检测。

将消息记录到控制台

可以通过console对象向JavaScript控制台中写入消息,这个对象具有下列方法:
error(message):将错误消息记录到控制台
info(message):将信息记录到控制台
log(message):将一般消息记录到控制台
warn(message):将警告消息记录到控制台

系统无法找到指定资源

在使用JavaScript请求某个资源URL,而该URL的长度超过了IE对URL最长不能超过2083个字符的限制时,就会发生这个错误。