浅谈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 写类方式之九
Jul 05 Javascript
js中关于new Object时传参的一些细节分析
Mar 13 Javascript
jQuery中用dom操作替代正则表达式
Dec 29 Javascript
用JS动态改变表单form里的action值属性的两种方法
May 25 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
Oct 26 Javascript
node.js调用Chrome浏览器打开链接地址的方法
May 17 Javascript
使用angular-cli webpack创建多个包的方法
Oct 16 Javascript
基于node+vue实现简单的WebSocket聊天功能
Feb 01 Javascript
解决vue-photo-preview 异步图片放大失效的问题
Jul 29 Javascript
jQuery实现雪花飘落效果
Aug 02 jQuery
简介JavaScript错误处理机制
Aug 04 Javascript
vue 使用微信jssdk,调用微信相册上传图片功能
Nov 13 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
虹吸壶是谁发明的?煮出来的咖啡好喝吗
2021/03/04 冲泡冲煮
PHP 数据结构 算法描述 冒泡排序 bubble sort
2011/07/10 PHP
php处理restful请求的路由类分享
2014/02/27 PHP
两种php去除二维数组的重复项方法
2015/11/04 PHP
详解Yii实现分页的两种方法
2017/01/14 PHP
Javascript之文件操作
2007/03/07 Javascript
javascript生成随机大小写字母的方法
2014/02/20 Javascript
JavaScript制作的可折叠弹出式菜单示例
2014/04/04 Javascript
JavaScript strike方法入门实例(给字符串加上删除线)
2014/10/17 Javascript
浅谈nodeName,nodeValue,nodeType,typeof 的区别
2015/01/13 Javascript
js动态修改表格行colspan列跨度的方法
2015/03/30 Javascript
JQuery显示隐藏页面元素的方法总结
2015/04/16 Javascript
AngularJs bootstrap搭载前台框架——基础页面
2016/09/01 Javascript
Angularjs 实现分页功能及示例代码
2016/09/14 Javascript
详解Angular.js数据绑定时自动转义html标签及内容
2017/03/30 Javascript
JS实现判断图片是否加载完成的方法分析
2018/07/31 Javascript
vue实现在一个方法执行完后执行另一个方法的示例
2018/08/25 Javascript
Vue请求java服务端并返回数据代码实例
2019/11/28 Javascript
javascript 易错知识点实例小结
2020/04/25 Javascript
Vue 实例中使用$refs的注意事项
2021/01/29 Vue.js
用Python的线程来解决生产者消费问题的示例
2015/04/02 Python
python基于BeautifulSoup实现抓取网页指定内容的方法
2015/07/09 Python
举例讲解Python的lambda语句声明匿名函数的用法
2016/07/01 Python
python之matplotlib学习绘制动态更新图实例代码
2018/01/23 Python
解决python os.mkdir创建目录失败的问题
2018/10/16 Python
Python爬取视频(其实是一篇福利)过程解析
2019/08/01 Python
新手入门学习python Numpy基础操作
2020/03/02 Python
python如何调用java类
2020/07/05 Python
CSS3中媒体查询结合rem布局适配手机屏幕
2019/06/10 HTML / CSS
文明风采获奖感言
2014/02/18 职场文书
关于晚自习早退的检讨书
2014/09/13 职场文书
地道战观后感
2015/06/04 职场文书
python 爬取吉首大学网站成绩单
2021/06/02 Python
python图片灰度化处理的几种方法
2021/06/23 Python
php 文件上传至OSS及删除远程阿里云OSS文件
2021/07/04 PHP
html中两种获取标签内的值的方法
2022/06/16 jQuery