javascript编程异常处理实例小结


Posted in Javascript onNovember 30, 2015

本文实例总结了javascript编程异常处理的方法。分享给大家供大家参考,具体如下:

前言:在前一篇《asp.net开发中常见公共捕获异常方式总结》,我们整理总结了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程序设计有所帮助。

Javascript 相关文章推荐
Javascript处理DOM元素事件实现代码
May 23 Javascript
javascript错误的认识不用关心内存管理
Dec 15 Javascript
js实现的切换面板实例代码
Jun 17 Javascript
Javascript闭包实例详解
Nov 29 Javascript
JavaScript中Object基础内部方法图
Feb 05 Javascript
JavaScript事件发布/订阅模式原理与用法分析
Aug 21 Javascript
vue 2.8.2版本配置刚进入时候的默认页面方法
Sep 21 Javascript
Vue项目history模式下微信分享爬坑总结
Mar 29 Javascript
函数式编程入门实践(一)
Apr 20 Javascript
Vue程序调试的方法
Jun 17 Javascript
vue 取出v-for循环中的index值实例
Nov 09 Javascript
js实现时分秒倒计时
Dec 03 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖动基本操作
Nov 30 #Javascript
轻松学习jQuery插件EasyUI EasyUI创建CRUD应用
Nov 30 #Javascript
javascript for-in有序遍历json数据并探讨各个浏览器差异
Nov 30 #Javascript
基于javascript如何传递特殊字符
Nov 30 #Javascript
基于js实现微信发送好友如何分享到朋友圈、微博
Nov 30 #Javascript
全面解析Bootstrap排版使用方法(文字样式)
Nov 30 #Javascript
javascript中eval和with用法实例总结
Nov 30 #Javascript
You might like
PHP提取数据库内容中的图片地址并循环输出
2010/03/21 PHP
php中利用post传递字符串重定向的实现代码
2011/04/21 PHP
解析php中var_dump,var_export,print_r三个函数的区别
2013/06/21 PHP
php修改指定文件后缀的方法
2014/09/11 PHP
php实现用于计算执行时间的类实例
2015/04/18 PHP
JS 无法通过W3C验证的处理方法
2010/03/09 Javascript
基于jQuery的输入框在光标位置插入内容, 并选中
2011/10/29 Javascript
jquery 层次选择器siblings与nextAll的区别介绍
2013/08/02 Javascript
Node.js中使用计时器定时执行函数详解
2014/08/15 Javascript
javascript实现用户点击数量统计
2016/12/25 Javascript
通过示例彻底搞懂js闭包
2017/08/10 Javascript
vue中使用localstorage来存储页面信息
2017/11/04 Javascript
Angular学习笔记之集成三方UI框架、控件的示例
2018/03/23 Javascript
微信小程序中换行空格(多个空格)写法详解
2018/07/10 Javascript
JavaScript设计模式之单例模式原理与用法实例分析
2018/07/26 Javascript
javascript实现视频弹幕效果(两个版本)
2019/11/28 Javascript
Python入门之三角函数tan()函数实例详解
2017/11/08 Python
简述:我为什么选择Python而不是Matlab和R语言
2017/11/14 Python
使用memory_profiler监测python代码运行时内存消耗方法
2018/12/03 Python
python 处理telnet返回的More,以及get想要的那个参数方法
2019/02/14 Python
Python 使用folium绘制leaflet地图的实现方法
2019/07/05 Python
django用户登录验证的完整示例代码
2019/07/21 Python
Flask项目中实现短信验证码和邮箱验证码功能
2019/12/05 Python
Python使用Pygame绘制时钟
2020/11/29 Python
美国家用电器和电子产品商店:Abt
2016/09/06 全球购物
Street One瑞士:德国现代时装公司
2019/10/09 全球购物
毕业生物理教师求职信
2013/10/17 职场文书
毕业生求职的求职信
2013/12/05 职场文书
新闻学专业职业生涯规划范文:我的人生我做主
2014/09/12 职场文书
《微笑着面对生活》优秀演讲稿范文
2014/09/23 职场文书
毕业生自荐材料范文
2014/12/30 职场文书
银行求职信范文怎么写
2015/03/20 职场文书
电影开国大典观后感
2015/06/04 职场文书
开学典礼致辞
2015/07/29 职场文书
Go语言基础切片的创建及初始化示例详解
2021/11/17 Golang
Springboot-cli 开发脚手架,权限认证,附demo演示
2022/04/28 Java/Android