javascript编程异常处理实例小结
本文实例总结了javascript编程异常处理的方法。分享给大家供大家参考,具体如下:
前言:在前一篇《asp.net开发中常见公共捕获异常方式总结》,我们整理总结了asp.net服务端的异常处理。这一篇接着前文,简单总结并讨论一下javascript在客户端的异常处理。这样asp.net的服务端和客户端异常处理我们就都有了初步的认识。
1、烦人的脚本错误
楼猪经常装13,但是普遍都没有深度。偶然艰难地看懂了一段英文,终于可以深沉地再装一回:
WhenbrowsingWebpagesontheinternet,weallhaveseenaJavaScriptalertboxtellingusthereisaruntimeerrorandasking"Doyouwishtodebug?".Errormessagelikethismaybeusefulfordevelopersbutnotforusers.Whenusersseeerrors,theyoftenleavetheWebpage.
上面这段话,哼哼,看不懂了吧?nc楼猪优雅且粗暴地理解一下就是,打开一个网页,我们都不时碰到过网页弹出脚步错误并询问“是否要调试?”这种sb问题。烦不烦啊,正常用户经常都会习惯性选择右上红叉,但是这种提示信息可能对开发人员就tmd很有用。由此可见,我kao,开发人员不正常?!看来楼猪理解有误。其实您不难看出,原文要告诉我们的最终意图应该是,网页里出现脚本错误很要命,用户体验不好,白白“吓跑”一批潜在用户。
2、如何处理脚本错误
在js中,我们通常也是通过try...catch来捕获并处理异常。
try { //Runsomecodehere } catch(e) { //Handleerrorshere }
在实际代码中,我们可能会这么写:
functiontest(){ vartxt=""; try{ alert(aaa);//aaa是未声明的变量 } catch(e){ txt="Therewasanerroronthispage.\n\n"; txt+="Errormessage:"+e.message+"\n\n"; txt+="Errordescription:"+e.description+"\n\n"; txt+="Errorname:"+e.name+"\n\n"; //alert(txt);//正式平台上可能需要注释掉该行 } }
还有一种比较通用的做法就是,给window对象的onerror事件注册通用处理方法,并将下面的代码置于页面的<head></head>节内:
window.onerror=function(){ returntrue; }
上面这种方式的好处是页面里写一次,就不会弹出恼人的脚本错误,有点全局处理的意思。对于开发人员,这种写法可能会隐藏潜在的脚本错误而不被发现,所以测试的时候需要注释掉上面的函数。
3、javascript里的Error
(1)、Error对象的常用属性
在我们捕获异常的时候,通常都会在catch处抛出一个Error对象的实例e,e的几个常用属性如下:
属性 说明
description 异常的描述信息
message 异常的描述信息
name 异常类型
number 独有的异常代号
在实际开发中,通常都会提示给开发人员message和name信息,以便有针对性地处理异常。
(2)、Error对象的类型
通过(1)中的name属性我们可以查看到异常类型。在js中,有如下几种常见异常类型:
TypeError :当遇到一个意外的类型时引发,比如未声明的变量等;
SyntaxError :在解析js代码时其中的语法错误引发,比如服务端注册脚步,少一个括号或引号等;
ReferenceError:使用一个无效的引用时引发该异常;
EvalError :在错误的调用eval函数时引发;
RangeError :在一个数字型变量的值超出了其范围时引发;
URIError : 错误地使用encodeURI()或decodeURI()函数时引发。
在实际的开发中,针对不同类型的异常作出不同的异常处理,有利于我们有效地发现问题和提高用户体验。
希望本文所述对大家JavaScript程序设计有所帮助。