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"); //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个字符的限制时,就会发生这个错误。