浅谈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学习基础知识小结
Nov 25 Javascript
js 判断控件获得焦点的示例代码
Mar 04 Javascript
多个jQuery版本共存的处理方案
Mar 17 Javascript
js插件设置innerHTML时在IE8下提示“未知运行时错误”解决方法
Apr 25 Javascript
jQuery复制表单元素附源码分享效果演示
Sep 30 Javascript
[原创]jQuery常用的4种加载方式分析
Jul 25 Javascript
javaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序整理总结
Oct 10 Javascript
jquery.form.js异步提交表单详解
Apr 25 jQuery
微信小程序实现打卡日历功能
Sep 21 Javascript
ES6的Fetch异步请求的实现方法
Dec 07 Javascript
Electron autoUpdater实现Windows安装包自动更新的方法
Dec 24 Javascript
JS实现滑动导航效果
Jan 14 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遍历某个目录下的所有文件和子文件夹的实现代码
2013/06/28 PHP
一个简单且很好用的php分页类
2013/10/26 PHP
php时区转换转换函数
2014/01/07 PHP
zend框架实现支持sql server的操作方法
2016/12/08 PHP
基于CI(CodeIgniter)框架实现购物车功能的方法
2018/04/09 PHP
jQuery ajax BUG:object doesn't support this property or method
2010/07/06 Javascript
jquery 选项卡效果 新手代码
2011/07/08 Javascript
jquery $.each() 使用小探
2013/08/23 Javascript
Jquery实现的tab效果可以指定默认显示第几页
2013/10/16 Javascript
禁用Enter键表单自动提交实现代码
2014/05/22 Javascript
JS实现带鼠标效果的头像及文章列表代码
2015/09/27 Javascript
JS加载器如何动态加载外部js文件
2016/05/26 Javascript
基于 Vue.js 之 iView UI 框架非工程化实践记录(推荐)
2017/11/21 Javascript
React Native中NavigatorIOS组件的简单使用详解
2018/01/27 Javascript
浅谈Vue-cli单文件组件引入less,sass,css样式的不同方法
2018/03/13 Javascript
利用Vue实现一个markdown编辑器实例代码
2019/05/19 Javascript
node中使用log4js4.x版本记录日志的方法
2019/08/20 Javascript
layui给下拉框、按钮状态、时间赋初始值的方法
2019/09/10 Javascript
layui将table转化表单显示的方法(即table.render转为表单展示)
2019/09/24 Javascript
vue引用外部JS的两种种方法
2020/01/28 Javascript
jQuery单页面文字搜索插件jquery.fullsearch.js的使用方法
2020/02/04 jQuery
解决vue使用vant下拉框van-dropdown-item 绑定title值不变问题
2020/08/05 Javascript
[13:38]2015国际邀请赛中国战队出征仪式
2015/05/29 DOTA
[54:17]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第二场 1月10日
2021/03/11 DOTA
Python中使用ElementTree解析XML示例
2015/06/02 Python
pytorch 图像中的数据预处理和批标准化实例
2020/01/15 Python
python 中不同包 类 方法 之间的调用详解
2020/03/09 Python
Python创建文件夹与文件的快捷方法
2020/12/08 Python
CAT鞋美国官网:CAT Footwear
2017/11/27 全球购物
美国相机和电子产品零售商:Beach Camera
2020/11/26 全球购物
工程师自我评价怎么写
2013/09/19 职场文书
大学生大二自我鉴定
2013/10/28 职场文书
物流专业大学生职业生涯规划书范文
2014/01/15 职场文书
绿色环保演讲稿
2014/05/10 职场文书
会计求职简历自我评价
2015/03/10 职场文书
pygame面向对象的飞行小鸟实现(Flappy bird)
2021/04/01 Python