浅谈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 相关文章推荐
如何用javascript控制上传文件的大小
Oct 26 Javascript
使用JS进行目录上传(相当于批量上传)
Dec 05 Javascript
window.location.href = window.location.href 跳转无反应 a超链接onclick事件写法
Aug 21 Javascript
Jquery在指定DIV加载HTML示例代码
Feb 17 Javascript
JQuery查找DOM节点的方法
Jun 11 Javascript
理解JS事件循环
Jan 07 Javascript
巧用数组制作图片切换js代码
Nov 29 Javascript
实现点击下箭头变上箭头来回切换的两种方法【推荐】
Dec 14 Javascript
Bootstrap CSS组件之下拉菜单(dropdown)
Dec 17 Javascript
vue mint-ui tabbar变组件使用
May 04 Javascript
vue实现一个炫酷的日历组件
Oct 08 Javascript
JSON.stringify()方法讲解
Jan 31 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操作Memcache实例介绍
2013/06/14 PHP
分享3个php获取日历的函数
2015/09/25 PHP
PHP正则表达式之捕获组与非捕获组
2015/11/06 PHP
4种PHP异步执行的常用方式
2015/12/24 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
用JavaScript修改CSS属性的代码
2013/05/06 Javascript
利用jquery动画特效和css打造的侧边弹出垂直导航
2014/04/04 Javascript
JavaScript onkeydown事件入门实例(键盘某个按键被按下)
2014/10/17 Javascript
JavaScript数据结构与算法之栈详解
2015/03/12 Javascript
动态加载JavaScript文件的两种方法
2016/04/22 Javascript
js实现文字向上轮播功能
2017/01/13 Javascript
js仿微博动态栏功能
2017/02/22 Javascript
JS获取input[file]的值并显示在页面的实现方法
2018/03/09 Javascript
解决webpack+Vue引入iView找不到字体文件的问题
2018/09/28 Javascript
详解webpack打包时排除其中一个css、js文件或单独打包一个css、js文件(两种方法)
2018/10/26 Javascript
vue+axios实现post文件下载
2019/09/25 Javascript
python发送邮件的实例代码(支持html、图片、附件)
2013/03/04 Python
web.py在SAE中的Session问题解决方法(使用mysql存储)
2015/06/24 Python
Python实现简单http服务器
2018/04/12 Python
python matlibplot绘制多条曲线图
2021/02/19 Python
python批量修改图片尺寸,并保存指定路径的实现方法
2019/07/04 Python
Python + OpenCV 实现LBP特征提取的示例代码
2019/07/11 Python
使用pandas 将DataFrame转化成dict
2019/12/10 Python
Pandas —— resample()重采样和asfreq()频度转换方式
2020/02/26 Python
python 调用Google翻译接口的方法
2020/12/09 Python
东方电视购物:东方CJ
2016/10/12 全球购物
法国珠宝店:CLEOR
2017/01/29 全球购物
生产厂厂长岗位职责
2013/12/25 职场文书
三年级科学教学反思
2014/01/29 职场文书
运动会通讯稿300字
2014/02/02 职场文书
工作经历证明书范文
2014/11/02 职场文书
暑期社会实践证明书
2014/11/17 职场文书
介绍信的格式
2015/01/30 职场文书
荆州古城导游词
2015/02/06 职场文书
bootstrapv4轮播图去除两侧阴影及线框的方法
2022/02/15 HTML / CSS
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL