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 利用Cookie记录用户登录信息
Dec 08 Javascript
extJs 下拉框联动实现代码
Apr 09 Javascript
JavaScript中的prototype使用说明
Apr 13 Javascript
jQuery判断checkbox是否选中的3种方法
Aug 12 Javascript
JavaScript函数详解
Feb 27 Javascript
AspNet中使用JQuery上传插件Uploadify详解
May 20 Javascript
很棒的js选项卡切换效果
Jul 15 Javascript
jQuery Easyui datagrid editor为combobox时指定数据源实例
Dec 19 Javascript
使用UrlConnection实现后台模拟http请求的简单实例
Jan 04 Javascript
js数组与字符串常用方法总结
Jan 13 Javascript
基于Vue实现可以拖拽的树形表格实例详解
Oct 18 Javascript
详解Vue中Axios封装API接口的思路及方法
Oct 10 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获取表单textarea数据中的换行问题
2010/09/10 PHP
php cli模式学习(PHP命令行模式)
2013/06/03 PHP
PHP加密函数 Javascript/Js 解密函数
2013/09/23 PHP
ThinkPHP3.1数据CURD操作快速入门
2014/06/19 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
PHP赋值的内部是如何跑的详解
2019/01/13 PHP
jquery将一个表单序列化为一个对象的方法
2014/01/03 Javascript
javascript(js)的小数点乘法除法问题详解
2014/03/07 Javascript
jquery 自定义容器下雨效果可将下雨图标改为其他
2014/04/23 Javascript
javascript中数组的多种定义方法和常用函数简介
2014/05/09 Javascript
javascript从image转换为base64位编码的String
2014/07/29 Javascript
jQuery CSS()方法改变现有的CSS样式表
2014/09/09 Javascript
js中的内部属性与delete操作符介绍
2015/08/10 Javascript
Javascript闭包实例详解
2015/11/29 Javascript
Node.js实现文件上传
2016/07/05 Javascript
简单几步实现返回顶部效果
2016/12/05 Javascript
解决layui上传文件提示上传异常,实际文件已经上传成功的问题
2018/08/19 Javascript
python计算圆周长、面积、球体体积并画出圆
2014/04/08 Python
Python中的各种装饰器详解
2015/04/11 Python
几个适合python初学者的简单小程序,看完受益匪浅!(推荐)
2019/04/16 Python
Python中使用__new__实现单例模式并解析
2019/06/25 Python
python安装scipy的方法步骤
2019/06/26 Python
解决yum对python依赖版本问题
2019/07/05 Python
python使用多线程查询数据库的实现示例
2020/08/17 Python
Python filter()及reduce()函数使用方法解析
2020/09/05 Python
python从Oracle读取数据生成图表
2020/10/14 Python
python+playwright微软自动化工具的使用
2021/02/02 Python
利用HTML5+css3+jquery+weui实现仿微信聊天界面功能
2018/01/08 HTML / CSS
html5 postMessage解决跨域、跨窗口消息传递方案
2016/12/20 HTML / CSS
欧舒丹英国官网:购买欧舒丹护手霜等明星产品
2017/01/17 全球购物
Camille Jewelry官网:现代女性时尚首饰
2019/07/07 全球购物
常务副总经理岗位职责
2014/04/12 职场文书
服务口号大全
2014/06/11 职场文书
Python连续赋值需要注意的一些问题
2021/06/03 Python
Python趣味实战之手把手教你实现举牌小人生成器
2021/06/07 Python
Python常用配置文件ini、json、yaml读写总结
2021/07/09 Python