浅谈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与图片美化checkbox和radio控件的代码(打包下载)
Nov 11 Javascript
加速IE的Javascript document输出的方法
Dec 02 Javascript
Javascript中Event属性搜集整理
Sep 17 Javascript
按下Enter焦点移至下一个控件的实现js代码
Dec 11 Javascript
js获取html页面节点方法(递归方式)
Dec 13 Javascript
HTML5 JS压缩图片并获取图片BASE64编码上传
Nov 16 Javascript
使用UrlConnection实现后台模拟http请求的简单实例
Jan 04 Javascript
详解vue之页面缓存问题(基于2.0)
Jan 10 Javascript
使用vuex的state状态对象的5种方式
Apr 19 Javascript
javascript实现文字跑马灯效果
Jun 18 Javascript
vue自定义组件(通过Vue.use()来使用)即install的用法说明
Aug 11 Javascript
vue生命周期钩子函数以及触发时机
Apr 26 Vue.js
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
destoon二次开发入门示例
2014/06/20 PHP
php socket实现的聊天室代码分享
2014/08/16 PHP
php 实现进制相互转换
2016/04/07 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
YII框架学习笔记之命名空间、操作响应与视图操作示例
2019/04/30 PHP
Yii框架中用response保存cookie,用request读取cookie的原理解析
2019/09/04 PHP
在Javascript里访问SharePoint列表数据的实现方法
2011/05/22 Javascript
js opener的使用详解
2014/01/11 Javascript
CSS3,HTML5和jQuery搜索框集锦
2014/12/02 Javascript
javascript实现对表格元素进行排序操作
2015/11/18 Javascript
js点击返回跳转到指定页面实现过程
2020/08/20 Javascript
JavaScript 闭包详细介绍
2016/09/28 Javascript
微信小程序 特效菜单抽屉效果实例代码
2017/01/11 Javascript
微信小程序page的生命周期和音频播放及监听实例详解
2017/04/07 Javascript
vue实现密码显示隐藏切换功能
2018/02/23 Javascript
element-ui 中的table的列隐藏问题解决
2018/08/24 Javascript
javascript实现计算指定范围内的质数示例
2018/12/29 Javascript
解决Vue在Tomcat8下部署页面不加载的问题
2019/11/12 Javascript
JavaScript运动原理基础知识详解
2020/04/02 Javascript
利用原生JS实现欢乐水果机小游戏
2020/04/23 Javascript
[03:31]DOTA2英雄基础教程 大地之灵
2013/12/17 DOTA
pygame学习笔记(1):矩形、圆型画图实例
2015/04/15 Python
python dict 字典 以及 赋值 引用的一些实例(详解)
2017/01/20 Python
详解Python利用random生成一个列表内的随机数
2019/08/21 Python
pycharm运行scrapy过程图解
2019/11/22 Python
PyCharm配置anaconda环境的步骤详解
2020/07/31 Python
西铁城美国官方网站:Citizen Watch美国
2019/11/08 全球购物
荷兰浴室和卫浴网上商店:Badkamerxxl.nl
2020/10/06 全球购物
物流专业大学生求职信范文
2013/10/28 职场文书
智能电子应届生求职信
2013/11/10 职场文书
西式婚礼证婚词
2014/01/12 职场文书
绿色城市实施方案
2014/03/19 职场文书
护士求职自荐信范文
2014/03/19 职场文书
珠宝的促销活动方案
2014/08/31 职场文书
在redisCluster中模糊获取key方式
2021/07/09 Redis
在容器中使用nginx搭建上传下载服务器
2022/05/11 Servers