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 相关文章推荐
JS调试必备的5个debug技巧
Mar 07 Javascript
jQuery中hide()方法用法实例
Dec 24 Javascript
JS实现鼠标箭头变成一个燃烧烛光效果的方法
Feb 28 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
Mar 03 Javascript
javascript实现简单的全选和反选功能
Jan 05 Javascript
JS调用某段SQL语句的方法
Oct 20 Javascript
javascript DOM的详解及实例代码
Mar 06 Javascript
VsCode新建VueJs项目的详细步骤
Sep 23 Javascript
解决vue2中使用axios http请求出现的问题
Mar 05 Javascript
解决Vue中mounted钩子函数获取节点高度出错问题
May 18 Javascript
fastadmin中调用js的方法
May 14 Javascript
纯JS实现五子棋游戏
May 28 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
CakePHP去除默认显示的标题及图标的方法
2008/10/22 PHP
php中设置index.php文件为只读的方法
2013/02/06 PHP
jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别
2013/12/02 Javascript
Jquery如何实现点击时高亮显示代码
2014/01/22 Javascript
原生javascript实现无间缝滚动示例
2014/01/28 Javascript
javascript获取checkbox复选框获取选中的选项
2014/08/12 Javascript
javascript入门教程基础篇
2015/11/16 Javascript
jQuery EasyUI 菜单与按钮之创建简单的菜单和链接按钮
2015/11/18 Javascript
JS组件Form表单验证神器BootstrapValidator
2016/01/26 Javascript
js判断复选框是否选中及选中个数的实现代码
2016/05/30 Javascript
Jquery获取当前城市的天气信息
2016/08/05 Javascript
js设置文字颜色的方法示例
2016/12/30 Javascript
vue中如何动态绑定图片,vue中通过data返回图片路径的方法
2018/02/07 Javascript
浅谈super-vuex使用体验
2018/06/25 Javascript
详解webpack自定义loader初探
2018/08/29 Javascript
Nodejs Express 通过log4js写日志到Logstash(ELK)
2018/08/30 NodeJs
微信小程序如何调用图片接口API并居中显示
2019/06/29 Javascript
vue.js中ref及$refs的使用方法解析
2019/10/08 Javascript
详解在Python中处理异常的教程
2015/05/24 Python
Python3.遍历某文件夹提取特定文件名的实例
2018/04/26 Python
使用PyInstaller将python转成可执行文件exe笔记
2018/05/26 Python
Python读取mat文件,并保存为pickle格式的方法
2018/10/23 Python
python实现控制台打印的方法
2019/01/12 Python
Django框架实现的分页demo示例
2019/05/25 Python
python matplotlib折线图样式实现过程
2019/11/04 Python
tensorflow模型继续训练 fineturn实例
2020/01/21 Python
Foot Locker德国官方网站:美国运动服和鞋类零售商
2018/11/01 全球购物
英国婴儿产品专家:Samuel Johnston
2020/04/20 全球购物
服装设计师职业生涯规划范文
2014/02/28 职场文书
单位委托书范本
2014/04/04 职场文书
《数星星的孩子》教学反思
2014/04/11 职场文书
勤奋学习演讲稿
2014/05/10 职场文书
招标承诺书
2014/08/30 职场文书
2014年行政部工作总结
2014/11/19 职场文书
机器人总动员观后感
2015/06/09 职场文书
基于angular实现树形二级表格
2021/10/16 Javascript