浅谈JavaScript异常处理语句


Posted in Javascript onJune 26, 2015

程序运行过程中难免会出错,出错后的运行结果往往是不正确的,因此运行时出错的程序通常被强制中止。运行时的错误统称为异常,为了能在错误发生时得到一个处理的机会,JavaScript提供了异常处理语句。包含try-catch、try-catch-finally和throw.

try-catch语句

try{
tryStatements
}
catch(exception){
catchStatements
}

参数说明:
tryStatements:必选项。可能发生错误的语句序列。
exception:必选项。任何变量名,用于引用错误发生时的错误对象。
catchStatements:可选项。错误处理语句,用于处理tryStatements中发生的错误。
编码时通常将可能发生错误的语句写入try块的花括号中,并在其后的catch块中处理错误。错误信息包含在一个错误对象(Error对象)里,通过exception的引用可以访问该对象。根据错误对象中的错误信息以确定如果处理。

<script type="text/javascript">
try{
var n = error; //人为引发一个错误,error未定义就使用
}
catch(e){
alert((e.number&0xFFFF) + "号错误:" + e.description); //错误处理:仅输出错误信息
}
</script>

该代码段使用了一个try-catch结构处理程序运行时错误,第4行人为引发一个错误。第6~9行的catch块捕捉错误并处理。
提示:JavaScript的错误为运行时错误和语法错误,语法错误在编译阶段发现;而运行时错误在运行过程中发现,错误处理语句仅能处理运行时错误。

try-catch-finally语句

try{
tryStatements;
}
catch( exception ){
handleStatements;
}
finally{
fianllyStatements;
}

参数说明:
tryStatements:必选项,可能引发异常的语句。
handleStatements:可选项,异常处理语句。
fianllyStatements:可选项,在其他过程执行结束后无条件执行的语句。
尽管没有错误发生finally块中的语句也会在最后得到执行,通常在此放置资源清理的程序代码。
遍历一个有苹果名称的数组时人为引发一个异常。

<script type="text/javascript">
try{
var fruit = new Array("鸭梨","苹果","葡萄","李子");

for( n=0;n<fruit.length;m++)
{
document.write(fruit[n] + "");
}
}
catch( e )
{
alert( (e.number&0xFFFF) + "号错误:" + e.description );
}
finally{
fruit = null;
alert("fruit="+fruit+"已经断开fruit数组的引用!");
}
</script>

该代码段第5行使用一个未定义的变量m,人为引发一个异常。第11~13行捕捉异常并处理。第14~18行的finally块清理资源,该语句无条件被执行,可以保证fruit数组所占资源不被泄露。

throw语句

多个异常处理语句可以嵌套使用。当多个结构嵌套时,处于里层try-catch语句不打算自己处理异常则可以将其抛出。父级try-catch语句可以接收到子级抛出的异常,抛出操作使用throw语句。
throw 表达式;
表达式的值是作为错误信息对象传出,该对象将被catch语句捕获。throw语句可以使用在打算抛出异常的任意地方。
通常情况下0不能作为除数,因此可以为除数为0定义一个异常并抛出。

<script>
try{
var dividend = 100; //被除数
var parts = 0; //除数
if( parts == 0){ //如果除数为0则抛出异常
throw "Error:parts is zero"; //抛出异常
}
alert("每人" + dividend/parts + "份"); //输出提示信息
}
catch(e){ //此处将捕获try块中抛出的异常
alert(e); //用对话框输出错误对象的信息
}
</script>

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
基于Jquery实现的一个图片滚动切换
Jun 21 Javascript
Google (Local) Search API的简单使用介绍
Nov 28 Javascript
jQuery不兼容input的change事件问题解决过程
Dec 05 Javascript
JS上传图片预览插件制作(兼容到IE6)
Aug 07 Javascript
利用React-router+Webpack快速构建react程序
Oct 27 Javascript
jQuery时间日期三级联动(推荐)
Nov 27 Javascript
详解vue.js 开发环境搭建最简单攻略
Jun 12 Javascript
JavaScript中EventLoop介绍
Jan 22 Javascript
JS在if中的强制类型转换方式
Jul 15 Javascript
VUE预渲染及遇到的坑
Sep 03 Javascript
微信小程序登录session的使用
Mar 17 Javascript
JS+CSS实现3D切割轮播图
Mar 21 Javascript
javascript实现一个数值加法函数
Jun 26 #Javascript
javascript排序函数实现数字排序
Jun 26 #Javascript
javascript实现给定半径求出圆的面积
Jun 26 #Javascript
js实现数组转换成json
Jun 26 #Javascript
javascript实现倒计时(精确到秒)
Jun 26 #Javascript
基于jQuery实现的旋转彩圈实例
Jun 26 #Javascript
jquery实现的树形目录实例
Jun 26 #Javascript
You might like
php程序效率优化的一些策略小结
2010/07/17 PHP
PHP全概率运算函数(优化版) Webgame开发必备
2011/07/04 PHP
php和js如何通过json互相传递数据相关问题探讨
2013/02/26 PHP
php对象和数组相互转换的方法
2015/05/12 PHP
全面解读PHP的人气开发框架Laravel
2015/10/15 PHP
PHP多进程之pcntl_fork的实例详解
2017/10/15 PHP
php-fpm重启导致的程序执行中断问题详解
2019/04/29 PHP
网站被黑的假象--ARP欺骗之页面中加入一段js
2007/05/16 Javascript
分享别人写的一个小型js框架
2007/08/13 Javascript
jQuery判断元素是否是隐藏的代码
2011/04/24 Javascript
改变隐藏的input中value的值代码
2013/12/30 Javascript
基于jquery实现的银行卡号每隔4位自动插入空格的实现代码
2016/11/22 Javascript
BootStrap Fileinput初始化时的一些参数
2016/12/30 Javascript
微信小程序 form组件详解及简单实例
2017/01/10 Javascript
AngularJS读取JSON及XML文件的方法示例
2017/05/25 Javascript
axios中cookie跨域及相关配置示例详解
2017/12/20 Javascript
vscode配置vue下的es6规范自动格式化详解
2019/03/20 Javascript
vue cli4.0项目引入typescript的方法
2020/07/17 Javascript
JavaScript十大取整方法实例教程
2020/12/03 Javascript
简单理解Python中的装饰器
2015/07/31 Python
Pycharm学习教程(3) 代码运行调试
2017/05/03 Python
Python爬取附近餐馆信息代码示例
2017/12/09 Python
python 字符串和整数的转换方法
2018/06/25 Python
Python语言检测模块langid和langdetect的使用实例
2019/02/19 Python
python的依赖管理的实现
2019/05/14 Python
python算法与数据结构之单链表的实现代码
2019/06/27 Python
利用python控制Autocad:pyautocad方式
2020/06/01 Python
Python基于Socket实现简易多人聊天室的示例代码
2020/11/29 Python
解析HTML5中的新功能本地存储localStorage
2016/03/01 HTML / CSS
九一八事变演讲稿
2014/09/05 职场文书
缓刑人员思想汇报500字
2014/09/12 职场文书
合作经营协议书范本
2014/09/16 职场文书
2014年最新版离婚协议书范本
2014/11/25 职场文书
公司副总经理岗位职责
2015/04/08 职场文书
生活小常识广播稿
2015/08/19 职场文书
Python3 类型标注支持操作
2021/06/02 Python