首页 > 代码库 > JavaScript高级程序设计学习笔记--错误处理与调试

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

try-catch语句

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

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

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

抛出错误

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

throw 12345;throw "Hello world!";

类型转换错误

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

alert(5=="5"); //truealert(5==="5"); //falsealert(1==true); //truealert(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个字符的限制时,就会发生这个错误。