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 Ajax方法调用 Asp.Net WebService 的详细实例代码
Apr 27 Javascript
基于jquery的无刷新分页技术
Jun 11 Javascript
jQuery EasyUI API 中文文档 - ComboBox组合框
Oct 07 Javascript
基于JQuery 选择器使用说明介绍
Apr 18 Javascript
复杂的javascript窗口分帧解析
Feb 19 Javascript
第五章之BootStrap 栅格系统
Apr 25 Javascript
Javascript单例模式的介绍和实例
Oct 08 Javascript
jQury Ajax使用Token验证身份实例代码
Sep 22 Javascript
vue this.reload 方法 配置
Sep 12 Javascript
vue计算属性get和set用法示例
Feb 08 Javascript
javascript 对象 与 prototype 原型用法实例分析
Nov 11 Javascript
在JavaScript中如何使用宏详解
May 06 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 mssql 时间格式问题
2009/01/13 PHP
在PHP中使用X-SendFile头让文件下载更快
2014/06/01 PHP
php实现用户登陆简单实例
2017/04/04 PHP
ThinkPHP实现简单登陆功能
2017/04/28 PHP
jQuery的初始化与对象构建之浅析
2011/04/12 Javascript
DWZ刷新dialog解决方法
2013/03/03 Javascript
jquery实现div阴影效果示例代码
2013/09/16 Javascript
javascript中Date对象的getDay方法使用指南
2014/12/22 Javascript
基于jQuery实现选取月份插件附源码下载
2015/12/28 Javascript
详解微信开发中snsapi_base和snsapi_userinfo及静默授权的实现
2017/03/11 Javascript
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
2018/03/21 Javascript
React Navigation 使用中遇到的问题小结
2018/05/08 Javascript
详解JavaScript添加给定的标签选项
2018/09/17 Javascript
Vue使用Canvas绘制图片、矩形、线条、文字,下载图片
2019/04/26 Javascript
微信小程序用户授权、位置授权及获取微信绑定手机号
2019/07/18 Javascript
细述Javascript的加法运算符的具体使用
2019/10/18 Javascript
解决vue scoped scss 无效的问题
2020/09/04 Javascript
vscode中的vue项目报错Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339)
2020/09/11 Javascript
[01:06:54]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第一场 1月24日
2021/03/11 DOTA
Python urllib模块urlopen()与urlretrieve()详解
2013/11/01 Python
Python中列表、字典、元组数据结构的简单学习笔记
2016/03/20 Python
Python处理PDF及生成多层PDF实例代码
2017/04/24 Python
Python编程之列表操作实例详解【创建、使用、更新、删除】
2017/07/22 Python
Python使用pandas处理CSV文件的实例讲解
2018/06/22 Python
pymysql的简单封装代码实例
2020/01/08 Python
印度在线内衣和时尚目的地:Zivame
2017/09/28 全球购物
FitFlop美国官网:英国符合人体工学的鞋类品牌
2018/10/05 全球购物
JSF的标签库有哪些
2012/04/27 面试题
英文版餐饮运营管理求职信
2013/11/06 职场文书
致铅球运动员广播稿精选
2014/01/12 职场文书
社区中秋节活动方案
2014/01/29 职场文书
社区学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
2014年宣传部个人工作总结
2014/12/06 职场文书
员工旷工检讨书
2015/08/15 职场文书
导游词之无锡丝业博物馆
2019/11/12 职场文书
只用Python就可以制作的简单词云
2021/06/07 Python