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读取xml
Nov 04 Javascript
javascript string字符串优化问题
Jul 31 Javascript
JavaScript高级程序设计 XML、Ajax 学习笔记
Sep 10 Javascript
jquery实现的让超出显示范围外的导航自动固定屏幕最顶上
Sep 22 Javascript
ASP.NET jQuery 实例5 (显示CheckBoxList成员选中的内容)
Jan 13 Javascript
JQuery一种取同级值的方式(比如你在GridView中)
Mar 15 Javascript
javascript的 {} 语句块详解
Feb 27 Javascript
值得分享和收藏的xmlplus组件学习教程
May 05 Javascript
vue 表单输入格式化中文输入法异常问题
May 30 Javascript
js调用设备摄像头的方法
Jul 19 Javascript
vue路由传参页面刷新参数丢失问题解决方案
Oct 08 Javascript
JavaScript对象原型链原理详解
Feb 05 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
PL-880隐藏功能
2021/03/01 无线电
php+xml编程之xpath的应用实例
2015/01/24 PHP
php去除二维数组的重复项方法
2015/11/03 PHP
php array 转json及java 转换 json数据格式操作示例
2019/11/13 PHP
可选择和输入的下拉列表框示例
2013/11/05 Javascript
js关于字符长度限制的问题示例探讨
2014/01/24 Javascript
js 与 php 通过json数据进行通讯示例
2014/03/26 Javascript
jQuery中val()方法用法实例
2014/12/25 Javascript
javascript html5摇一摇功能的实现
2016/04/19 Javascript
详解Vue.js动态绑定class
2016/12/20 Javascript
React路由管理之React Router总结
2018/05/10 Javascript
vue父组件异步获取数据传给子组件的方法
2018/07/26 Javascript
javascript和php使用ajax通信传递JSON的实例
2018/08/21 Javascript
学习jQuery中的noConflict()用法
2018/09/28 jQuery
微信小程序实现图片滚动效果示例
2018/12/05 Javascript
记一次vue去除#问题处理经过小结
2019/01/24 Javascript
vue实现动态显示与隐藏底部导航的方法分析
2019/02/11 Javascript
详解使用React.memo()来优化函数组件的性能
2019/03/19 Javascript
vue实现按需加载组件及异步组件功能
2019/05/27 Javascript
详解Vue数据驱动原理
2020/11/17 Javascript
jquery实现拖拽添加元素功能
2020/12/01 jQuery
11个Javascript小技巧帮你提升代码质量(小结)
2020/12/28 Javascript
[17:45]DOTA2 HEROES教学视频教你分分钟做大人-军团指挥官
2014/06/11 DOTA
Python实现的爬虫功能代码
2017/06/24 Python
python xlsxwriter库生成图表的应用示例
2018/03/16 Python
简单了解Python变量作用域正确使用方法
2020/06/12 Python
H5新属性audio音频和video视频的控制详解(推荐)
2016/12/09 HTML / CSS
墨西哥皇宫度假村预订:Palace Resorts
2018/06/16 全球购物
关于诚信的活动方案
2014/08/18 职场文书
2015年医务人员医德医风自我评价
2015/03/03 职场文书
2015年度残疾人工作总结
2015/05/14 职场文书
暑假打工感想
2015/08/07 职场文书
银行柜员工作心得体会
2016/01/23 职场文书
五年级数学教学反思
2016/02/16 职场文书
Python 恐龙跑跑小游戏实现流程
2022/02/15 Python
python神经网络学习 使用Keras进行回归运算
2022/05/04 Python