这篇文章主要介绍了 javascript 编程异常处理的方法, 结合实例形式分析总结了 JavaScript 编程中异常处理的相关技巧, 具有一定参考借鉴价值, 需要的朋友可以参考下
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
本文实例总结了 javascript 编程异常处理的方法。分享给大家供大家参考,具体如下:
前言:在前一篇《{aa0aa}》,我们整理总结了 asp.net 服务端的异常处理。这一篇接着前文,简单总结并讨论一下 javascript 在客户端的异常处理。这样 asp.net 的服务端和客户端异常处理我们就都有了初步的认识。
1、烦人的脚本错误
楼猪经常装 13,但是普遍都没有深度。偶然艰难地看懂了一段英文,终于可以深沉地再装一回:
When browsing web pages on the internet, we all have seen a JavaScript alert box telling us there is a runtime error and asking "Do you wish to debug?". Error message like this may be useful for developers but not for users. When users see errors, they often leave the Web page.
上面这段话,哼哼,看不懂了吧?nc 楼猪优雅且粗暴地理解一下就是,打开一个网页,我们都不时碰到过网页弹出脚步错误并询问 "是否要调试?" 这种 sb 问题。烦不烦啊,正常用户经常都会习惯性选择右上红叉,但是这种提示信息可能对开发人员就 tmd 很有用。由此可见,我 kao,开发人员不正常?!看来楼猪理解有误。其实您不难看出,原文要告诉我们的最终意图应该是,网页里出现脚本错误很要命,用户体验不好,白白 "吓跑" 一批潜在用户。
2、如何处理脚本错误
在 js 中,我们通常也是通过 try...catch 来捕获并处理异常。
- try
- {
- //Run some code here
- }
- catch(e)
- {
- //Handle errors here
- }
在实际代码中,我们可能会这么写:
- function test(){
- var txt="";
- try{
- alert(aaa);//aaa是未声明的变量
- }
- catch(e){
- txt="There was an error on this page.\n\n";
- txt+="Error message: " + e.message + "\n\n";
- txt+="Error description: " + e.description + "\n\n";
- txt+="Error name: " + e.name + "\n\n";
- //alert(txt);//正式平台上可能需要注释掉该行
- }
- }
还有一种比较通用的做法就是,给 window 对象的 onerror 事件注册通用处理方法,并将下面的代码置于页面的 <head></head> 节内:
- window.onerror=function(){
- return true;
- }
上面这种方式的好处是页面里写一次,就不会弹出恼人的脚本错误,有点全局处理的意思。对于开发人员,这种写法可能会隐藏潜在的脚本错误而不被发现,所以测试的时候需要注释掉上面的函数。
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 程序设计有所帮助。
来源: