浅谈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 相关文章推荐
网页中CDATA标记的说明
Sep 12 Javascript
有关于JS构造函数的重载和工厂方法
Apr 07 Javascript
Ext修改GridPanel数据和字体颜色、css属性等
Jun 13 Javascript
jquery 取子节点及当前节点属性值的方法
Aug 24 Javascript
Javascript中的匿名函数与封装介绍
Mar 15 Javascript
js格式化时间的简单实例
Nov 27 Javascript
Jquery Easyui表单组件Form使用详解(30)
Dec 19 Javascript
原生javascript上传图片带进度条【实例分享】
Apr 06 Javascript
vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍
Sep 29 Javascript
小程序实现多列选择器
Feb 15 Javascript
vue实现图片上传到后台
Jun 29 Javascript
nuxt引入组件和公共样式的操作
Nov 05 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 服务器调试 Zend Debugger 的安装教程
2009/09/25 PHP
解决php接收shell返回的结果中文乱码问题
2014/01/23 PHP
php实现的mysqldb读写分离操作类示例
2017/02/07 PHP
jQuery-serialize()输出序列化form表单值的方法
2012/12/26 Javascript
js数字转换为float,取N位小数
2014/02/08 Javascript
jquery map方法使用示例
2014/04/23 Javascript
JavaScript中计算网页中某个元素的位置
2015/06/10 Javascript
纯javascript模仿微信打飞机小游戏
2015/08/20 Javascript
在 Express 中使用模板引擎
2015/12/10 Javascript
基于jQuery实现的无刷新表格分页实例
2016/02/17 Javascript
Vuejs第七篇之Vuejs过渡动画案例全面解析
2016/09/05 Javascript
JavaScript中Math对象的方法介绍
2017/01/05 Javascript
JS区分Object与Aarry的六种方法总结
2017/02/27 Javascript
jquery mobile实现可折叠的导航按钮
2017/03/11 Javascript
微信小程序实现给循环列表添加点击样式实例
2017/04/26 Javascript
JS+HTML5实现获取手机验证码倒计时按钮
2018/08/08 Javascript
jQuery实现的淡入淡出图片轮播效果示例
2018/08/29 jQuery
详解react内联样式使用webpack将px转rem
2018/09/13 Javascript
如何在基于vue-cli的项目自定义打包环境
2018/11/10 Javascript
angular中两种表单的区别(响应式和模板驱动表单)
2018/12/06 Javascript
运用js实现图层拖拽的功能
2019/05/24 Javascript
Python3读取UTF-8文件及统计文件行数的方法
2015/05/22 Python
python实现在IDLE中输入多行的方法
2018/04/19 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
2018/10/26 Python
Python语法分析之字符串格式化
2019/06/13 Python
Python将二维列表list的数据输出(TXT,Excel)
2020/04/23 Python
next在python中返回迭代器的实例方法
2020/12/15 Python
Lacoste澳大利亚官网:服装、鞋类及配饰
2018/11/14 全球购物
流行文化收藏品:Sideshow(DC漫画,星球大战,漫威)
2019/03/17 全球购物
环境建设实施方案
2014/03/14 职场文书
光学与应用专业毕业生求职信
2014/09/01 职场文书
2014年祖国生日寄语
2014/09/19 职场文书
2014年加油站工作总结
2014/12/04 职场文书
二年级语文上册复习计划
2015/01/19 职场文书
2015年高校图书馆工作总结
2015/04/30 职场文书
《小小的船》教学反思
2016/02/18 职场文书