1、错误报告、错误处理以及代码调试,一直被认为是JavaScript的弱项,直到ECMAScript3和ECMAScript4的退出才得到改善。在ECMAScript中将JS的错误分为语法错误(ERROR)和运行期错误(Exception)。
2、不同的浏览器对于异常的处理策略不一样,下面列出了一些常用浏览器对于异常的处理以及一些操作方法:
2、不同的浏览器对于异常的处理策略不一样,下面列出了一些常用浏览器对于异常的处理以及一些操作方法:
3、主流的两种处理异常的方法:onError和try/catch/finally
4、onError是BOM的标准方法,用于捕获异常并进行处理。该方法激活时传递三个参数:ErrorMessage(错误报告消息)、URL(发生错误的URL地址)、LineNumber(错误所在行数)。例如:
Js
代码
[url=]file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif[/url]
1. onerror = handleErr;
2.
function handleErr(msg, url, l){
3. txt = "本页中存在错误。\n\n";
4. txt += "错误:" + msg + "\n";
5. txt += "URL: " + url + "\n";
6. txt += "行:" + l + "\n\n";
7. txt += "点击“确定”继续。\n\n";
8. alert(txt);
9.
return
true;
10. }
不幸的是,onError是标准BOM对象,浏览器不同支持的不同,如Safari就不支持该模型方法。
5、try/catch/finally结构,catch捕获的是ExceptionError对象,该对象有两个属性,Name(Error对象的类型)、Message(错误信息)。与Java相比,JS的try/catch不支持一次catch多个异常,但是可以嵌套catch。用户也可以使用throw来抛出自己的异常。例如:
Js
代码
[url=]file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif[/url]
1.
try {
2. fo.bar();
3. }
catch (e) {
4. alert(e.name + ": " + e.message);
5. }
6、到目前为止我们常接触到的异常包括:
EvalError:用eval()函数发生异常时抛出
RangeError:数值超出相应范围时触发
ReferenceError:找不到对象的情况下
SyntaxError:把语法错误的JavaScript字符串传入eval()函数
TypeError:变量中保存着意外的类型时,或访问不存在的方法时
URIError:使用encodeURI()或decodeURI(),而URI格式不正确时
原文地址:http://www.jz-net.cn/forum.php?mod=viewthread&tid=12414&extra=page%3D1