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 相关文章推荐
Javascript 解疑
Nov 11 Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
Mar 25 Javascript
第一次接触JS require.js模块化工具
Apr 17 Javascript
javascript回到顶部特效
Jul 30 Javascript
js仿微信语音播放实现思路
Dec 12 Javascript
self.attachevent is not a function的解决方法
Apr 04 Javascript
详解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
Jun 16 Javascript
微信小程序js文件改变参数并在视图上及时更新【推荐】
Jun 11 Javascript
JavaScript多态与封装实例分析
Jul 27 Javascript
ES6知识点整理之Proxy的应用实例详解
Apr 16 Javascript
微信小程序框架的页面布局代码
Aug 17 Javascript
24个解决实际问题的ES6代码片段(小结)
Feb 02 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
第一节--面向对象编程
2006/11/16 PHP
PHP 下载文件时自动添加bom头的方法实例
2014/01/10 PHP
php实现微信公众号无限群发
2015/10/11 PHP
PHP关键特性之命名空间实例详解
2017/05/06 PHP
PHP实现获取第一个中文首字母并进行排序的方法
2017/05/09 PHP
Symfony查询方法实例小结
2017/06/28 PHP
背景音乐每次刷新都可以自动更换
2007/02/01 Javascript
JavaScript 开发规范要求(图文并茂)
2010/06/11 Javascript
基于jQuery的动态表格插件
2011/03/28 Javascript
JavaScript 判断用户输入的邮箱及手机格式是否正确
2013/12/08 Javascript
jquery实现在光标位置插入内容的方法
2015/02/05 Javascript
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
node.js操作mongodb学习小结
2015/04/25 Javascript
javascript实现在下拉列表中显示多级树形菜单的方法
2015/08/12 Javascript
javascript实现的网站访问量统计代码
2015/12/20 Javascript
js判断所有表单项不为空则提交表单的实现方法
2016/09/09 Javascript
chrome下判断点击input上标签还是其余标签的实现方法
2016/09/18 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
2016/12/30 Javascript
图文详解Javascript中的上下文和作用域
2017/02/15 Javascript
浅谈webpack打包过程中因为图片的路径导致的问题
2018/02/21 Javascript
vue解决一个方法同时发送多个请求的问题
2018/09/25 Javascript
微信小程序实现动态列表项的顺序加载动画
2019/07/25 Javascript
python的三目运算符和not in运算符使用示例
2014/03/03 Python
python爬虫之BeautifulSoup 使用select方法详解
2017/10/23 Python
python实现给微信指定好友定时发送消息
2019/04/29 Python
基于python 凸包问题的解决
2020/04/16 Python
Selenium alert 弹窗处理的示例代码
2020/08/06 Python
HTML5 Canvas 起步(1) - 基本概念
2009/05/12 HTML / CSS
美国嘻哈首饰购物网站:Hip Hop Bling
2016/12/30 全球购物
工商管理专业实习大学生自我鉴定
2013/09/19 职场文书
中国梦演讲稿教师篇
2014/04/23 职场文书
求职信怎么写范文
2014/05/26 职场文书
毕业生工作求职信
2014/06/30 职场文书
学生检讨书范文
2014/10/30 职场文书
美术教师个人工作总结
2015/02/06 职场文书
2016年感恩母亲节活动总结
2016/04/01 职场文书