JavaScript在错误处理调试上一直是它的软肋,出错的脚本经常给人摸不着头脑。为此,ECMAScript引入了try...catch和throw语句以及一些错误类型,让开发人员更加适时的处理错误。
一、浏览器的错误报告
目前浏览器的JavaScript调试能力也在不断的增强,如IE、Chrome、FF等都具有报告JavaScript错误的机制。
IE:默认情况下,错误出现在左下角,双击这个图标可以看到错误消息对话框。如果开启禁止脚本调试,那么出错的时候,会弹出错误调试框。设置方法为:工具->Internet Options选项->高级->禁用脚本调试,取消勾选即可。
FF:在默认情况下,错误不会通过浏览器给出提示。但在后台的错误控制台可以查看。查看方法:工具->web开发者->web控制台|错误控制台。此外FF还提供了一个强大的插件:Firebug。它可以调试的种类非常的多。
电脑 Chrome:默认情况下,错误会被隐藏起来。打开错误记录的方法为:工具->JavaScript控制台。
二、错误处理
try-catch语句:
在e对象中,还规定了两个属性:message和name,分别打印出信息和名称。
finally子句:
finally语句作为try-catch的可选语句,不管是否发生异常,都会执行。并且不管try或catch里包含return语句,也不会阻止finally执行。
说明:finally的作用一般是为了防止出现异常后,无法往下再执行的备用。比如说有一些情况操作,在出现异常后,就不会执行,那么可以把清理操作放到finally里。
错误类型:
ECMA-262定义了7种错误类型:
1.Error
2.EvalError
3.RangeError
4.ReferenceError
5.SyntaxError
6.TypeError
7.URIError
其中Error是基类型,其它类型继承自它。
利用不同的错误类型,可以更加恰当的给出错误信息或处理。
善于利用try-catch:
在明明知道某个地方会产生错误,可以通过修改代码来解决的地方,是不适合用try-catch的。再者那种不同浏览器兼容性错误导致的也不太适合,因为这些通过判断浏览器或浏览器属性是否存在此属性和方法来解决。
抛出错误:
使用catch来处理错误信息,如果处理不了,那就抛出丢掉。抛出错误其实就是在浏览器显示一个错误,只不过,错误信息可以自定义的更加精确和具体。
三、错误时间
error事件是当某个DOM对象产生错误的时候触发。
四、错误处理策略
由于javascript错误可能会导致网页无法使用,所以搞清楚及为什么发生错误至关重要。
常见错误类型:1.类型转换错误;2.数据类型错误;3.通信错误。
①类型转换错误:在一些判断比较的时候发生。
在这种类型转换的判断,强烈建议使用全等,以保证判断的正确性。
②数据类型错误:
为了避免这种错误的出现,应该使用类型比较。
③通信错误
在使用url进行参数传递时,经常会传递一些中文名的参数或URL地址,在后台处理时会发生转换乱码或错误,所以有必要使用编码进行统一传递。
比如:?user=中文字符&age=30
var url = \"?user=encodeURLComponent('中文字符')\" + \"&age=100\";
五、调试技术
①alert():
这个方法可以打印你怀疑的是否得到相应的值,或者放在程序的某处来看看是否能执行,得知之前的代码无误。
②将错误记录到控制台
console对象写入消息即可。
③将错误抛出
六、调试工具
①设置断点:当我们需要调试的时候,从断点处开始运行,发现代码执行的流程和变化。
②单步调试:设置断点后,可以单步调试,一步步看代码执行的步骤和流程。
③监控
④控制台