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 相关文章推荐
jQuery仿Excel表格编辑功能的实现代码
May 01 Javascript
Javascript中各种trim的实现详细解析
Dec 10 Javascript
jQuery中:button选择器用法实例
Jan 04 Javascript
常见JS验证脚本汇总
Dec 01 Javascript
Node.js的MongoDB驱动Mongoose基本使用教程
Mar 01 Javascript
Javascript字符串拼接小技巧(推荐)
Jun 02 Javascript
Vue.JS入门教程之处理表单
Dec 01 Javascript
详解Javascript中new()到底做了些什么?
Mar 29 Javascript
微信小程序实现的3d轮播图效果示例【基于swiper组件】
Dec 11 Javascript
vue 验证码界面实现点击后标灰并设置div按钮不可点击状态
Oct 28 Javascript
openlayers 3实现车辆轨迹回放
Sep 24 Javascript
Js实现粘贴上传图片的原理及示例
Dec 09 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
PHP文件上传小程序 适合初学者学习!
2019/05/23 PHP
表格 隔行换色升级版
2009/11/07 Javascript
jQuery AJAX 调用WebService实现代码
2010/03/24 Javascript
分享27款非常棒的jQuery 表单插件
2011/03/28 Javascript
js/html光标定位的实现代码
2013/09/23 Javascript
值得分享的Bootstrap Ace模板实现菜单和Tab页效果
2015/12/30 Javascript
jQuery实现公告新闻自动滚屏效果实例代码
2016/07/14 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
2021/02/25 Javascript
值得分享的JavaScript实现图片轮播组件
2016/11/21 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
2017/03/16 Javascript
Angular directive递归实现目录树结构代码实例
2017/05/05 Javascript
JS函数内部属性之arguments和this实例解析
2018/10/07 Javascript
javascript实现手动点赞效果
2019/04/09 Javascript
利用JavaScript将Excel转换为JSON示例代码
2019/06/14 Javascript
JavaScript的查询机制LHS和RHS解析
2019/08/16 Javascript
JS实现音乐导航特效
2020/01/06 Javascript
ES6箭头函数和扩展实例分析
2020/05/23 Javascript
vue样式穿透 ::v-deep的具体使用
2020/06/04 Javascript
解决Vue keep-alive 调用 $destory() 页面不再被缓存的情况
2020/10/30 Javascript
[31:55]完美世界DOTA2联赛循环赛 IO vs GXR BO2第一场 11.04
2020/11/05 DOTA
[42:48]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第二场 12.11
2020/12/16 DOTA
Python contextlib模块使用示例
2015/02/18 Python
Python最基本的输入输出详解
2015/04/25 Python
Python2.x利用commands模块执行Linux shell命令
2016/03/11 Python
python中将函数赋值给变量时需要注意的一些问题
2017/08/18 Python
python监控进程脚本
2018/04/12 Python
Python中修改字符串的四种方法
2018/11/02 Python
Python3 Post登录并且保存cookie登录其他页面的方法
2018/12/28 Python
python读取csv和txt数据转换成向量的实例
2019/02/12 Python
ipython和python区别详解
2019/06/26 Python
css3制作彩色边线3d立体按钮的示例(css3按钮)
2014/05/06 HTML / CSS
南非最受欢迎的时尚品牌:MRP
2016/09/18 全球购物
绿色环保标语
2014/06/12 职场文书
幼儿园六一主持词开场白
2015/05/28 职场文书
光荣之路观后感
2015/06/12 职场文书
Mysql 8.x 创建用户以及授予权限的操作记录
2022/04/18 MySQL