js中的异常处理try...catch使用介绍


Posted in Javascript onSeptember 21, 2013

在JavaScript可以使用try...catch来进行异常处理。例如:

try { foo.bar();} catch (e) { alert(e.name + ": " + e.message);}

目前我们可能得到的系统异常主要包含以下6种:

EvalError: raised when an error occurs executing code in eval()
RangeError: raised when a numeric variable or parameter is outside of its valid range
ReferenceError: raised when de-referencing an invalid reference
SyntaxError: raised when a syntax error occurs while parsing code in eval()
TypeError: raised when a variable or parameter is not a valid type
URIError: raised when encodeURI() or decodeURI() are passed invalid parameters

上面的六种异常对象都继承自Error对象。他们都支持以下两种构造方法:

new Error();new Error("异常信息");

手工抛出异常的方法如下:

try { throw new Error("Whoops!");} catch (e) { alert(e.name + ": " + e.message);}

如要判断异常信息的类型,可在catch中进行判断:
try { foo.bar();} catch (e) { if (e instanceof EvalError) { alert(e.name + ":" + e.message); } else if (e instanceof RangeError) { alert(e.name + ": " + e.message); } // etc }

Error具有下面一些主要属性:

description: 错误描述 (仅IE可用).
fileName: 出错的文件名 (仅Mozilla可用).
lineNumber: 出错的行数 (仅Mozilla可用).
message: 错误信息 (在IE下同description)
name: 错误类型.
number: 错误代码 (仅IE可用).
stack: 像Java中的Stack Trace一样的错误堆栈信息 (仅Mozilla可用).

因此为了更好的了解错误信息我们可以将catch部分改为如下形式:

try { foo.bar();} catch (e) { if (browserType != BROWSER_IE) { 
alert("name: " + e.name + "message: " + e.message + "lineNumber: " + e.lineNumber + "fileName: " + e.fileName + "stack: " + e.stack); 
} else { 
alert("name: " + e.name +"errorNumber: " + (e.number & 0xFFFF ) + "message: " + e.message"); 
} }

JavaScript中的throw命令事实上可以抛出任何对象,并且我们可以在catch接受到此对象。例如:
try { throw new Date(); // 抛出当前时间对象 } catch (e) { alert(e.toLocaleString()); // 使用本地格式显示当前时间 }
Javascript 相关文章推荐
如何让div span等元素能响应键盘事件操作指南
Nov 13 Javascript
Javascript学习笔记之 函数篇(二) : this 的工作机制
Jun 24 Javascript
编写自己的jQuery提示框(Tip)插件
Feb 05 Javascript
js实现的全国省市二级联动下拉选择菜单完整实例
Aug 17 Javascript
node网页分段渲染详解
Sep 05 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
Nov 01 Javascript
webpack配置sass模块的加载的方法
Jul 30 Javascript
vue elementui form表单验证的实现
Nov 11 Javascript
加快Vue项目的开发速度的方法
Dec 12 Javascript
浅谈目前可以使用ES10的5个新特性
Jun 25 Javascript
微信小程序 多行文本显示...+显示更多按钮和收起更多按钮功能
Sep 26 Javascript
Nuxt v-bind绑定img src不显示的解决
Dec 05 Javascript
使用JS读秒使用示例
Sep 21 #Javascript
用RadioButten或CheckBox实现div的显示与隐藏
Sep 21 #Javascript
JS.GetAllChild(element,deep,condition)使用介绍
Sep 21 #Javascript
JS.findElementById()使用介绍
Sep 21 #Javascript
JS.getTextContent(element,preformatted)使用介绍
Sep 21 #Javascript
javascript实现原生ajax的几种方法介绍
Sep 21 #Javascript
使用javascript实现页面定时跳转总结篇
Sep 21 #Javascript
You might like
PHP4与PHP5的时间格式问题
2008/02/17 PHP
Codeigniter整合Tank Auth权限类库详解
2014/06/12 PHP
利用PHP将图片转换成base64编码的实现方法
2016/09/13 PHP
微信公众号实现会员卡领取功能
2017/06/08 PHP
nodeType属性返回被选节点的节点类型介绍
2013/11/22 Javascript
浅析JQuery UI Dialog的样式设置问题
2013/12/18 Javascript
JS小游戏之象棋暗棋源码详解
2014/09/25 Javascript
轻松创建nodejs服务器(8):非阻塞是如何实现的
2014/12/18 NodeJs
使用javascript实现监控视频播放并打印日志
2015/01/05 Javascript
深入理解JavaScript系列(43):设计模式之状态模式详解
2015/03/04 Javascript
JavaScript数组对象实现增加一个返回随机元素的方法
2015/07/27 Javascript
js如何改变文章的字体大小
2016/01/08 Javascript
Javascript的表单验证长度
2016/03/16 Javascript
20分钟打造属于你的Bootstrap站点
2016/07/27 Javascript
Vue.js第二天学习笔记(vue-router)
2016/12/01 Javascript
有关suggest快速删除后仍然出现下拉列表的bug问题
2016/12/02 Javascript
jQuery图片瀑布流的简单实现代码
2017/03/15 Javascript
JavaScript 过滤关键字
2017/03/20 Javascript
Angualrjs和bootstrap相结合实现数据表格table
2017/03/30 Javascript
jQuery Form插件使用详解_动力节点Java学院整理
2017/07/17 jQuery
swiper插件自定义切换箭头按钮
2017/12/28 Javascript
JS与SQL方式随机生成高强度密码示例
2018/12/29 Javascript
vue实现购物车案例
2020/05/30 Javascript
[02:07]2018DOTA2亚洲邀请赛主赛事第三日五佳镜头 fy极限反杀
2018/04/06 DOTA
python中的sort方法使用详解
2014/07/25 Python
用Python计算三角函数之atan()方法的使用
2015/05/15 Python
Python爬虫将爬取的图片写入world文档的方法
2018/11/07 Python
python识别文字(基于tesseract)代码实例
2019/08/24 Python
python 实现简单的FTP程序
2019/12/27 Python
如何在django中运行scrapy框架
2020/04/22 Python
django admin管理工具自定义时间区间筛选器DateRangeFilter介绍
2020/05/19 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
2020/07/03 Python
python 检测nginx服务邮件报警的脚本
2020/12/31 Python
会计专业大学生求职信范文
2014/01/28 职场文书
《望庐山瀑布》教学反思
2014/04/22 职场文书
2016优秀教师先进个人事迹材料
2016/02/25 职场文书