浅谈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 相关文章推荐
AngularJS向后端ASP.NET API控制器上传文件
Feb 03 Javascript
jquery基础知识第一讲之认识jquery
Mar 17 Javascript
封装运动框架实战左右与上下滑动的焦点轮播图(实例)
Oct 17 Javascript
vue2.0组件之间传值、通信的多种方式(干货)
Feb 10 Javascript
Angular 向组件传递模板的两种方法
Feb 23 Javascript
使用vue-cli编写vue插件的方法
Feb 26 Javascript
vue组件实现可搜索下拉框扩展
Oct 23 Javascript
Vue项目添加动态浏览器头部title的方法
Jul 11 Javascript
JavaScript设计模式之装饰者模式实例详解
Jan 17 Javascript
Vue 子组件与数据传递问题及注意事项
Jul 11 Javascript
Vue-cli项目部署到Nginx服务器的方法
Nov 01 Javascript
JS检测浏览器开发者工具是否打开的方法详解
Oct 02 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进程通信基础之信号
2017/02/19 PHP
PHP用函数嵌入网站访问量计数器
2017/10/27 PHP
一些相见恨晚的 JavaScript 技巧
2010/04/25 Javascript
JavaScript 原型继承之构造函数继承
2011/08/26 Javascript
中文字符串截取的js函数代码
2013/04/17 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
2015/01/28 Javascript
JavaScript常用字符串与数组扩展函数小结
2016/04/24 Javascript
漫谈JS引擎的运行机制 你应该知道什么
2016/06/15 Javascript
第一次接触神奇的前端框架vue.js
2016/12/01 Javascript
JS实现简易刻度时钟示例代码
2017/03/11 Javascript
详解使用fetch发送post请求时的参数处理
2017/04/05 Javascript
JavaScript数据结构中串的表示与应用实例
2017/04/12 Javascript
springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项
2017/04/23 Javascript
详解Vue路由开启keep-alive时的注意点
2017/06/20 Javascript
JS设计模式之命令模式概念与用法分析
2018/02/06 Javascript
javascript原生封装一个淡入淡出效果的函数测试实例代码
2018/03/19 Javascript
使用Angular Cli如何创建Angular私有库详解
2019/01/30 Javascript
手挽手带你学React之React-router4.x的使用
2019/02/14 Javascript
微信小程序聊天功能的示例代码
2020/01/13 Javascript
python字符串连接方式汇总
2014/08/21 Python
Python安装第三方库的3种方法
2015/06/21 Python
深入解析Python中的list列表及其切片和迭代操作
2016/03/13 Python
python在html中插入简单的代码并加上时间戳的方法
2018/10/16 Python
Python列表list排列组合操作示例
2018/12/18 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
2019/01/17 Python
Django uwsgi Nginx 的生产环境部署详解
2019/02/02 Python
Python基于xlutils修改表格内容过程解析
2020/07/28 Python
Python logging模块原理解析及应用
2020/08/13 Python
Python list和str互转的实现示例
2020/11/16 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
个人授权委托书范本
2014/04/03 职场文书
合伙经营协议书范本
2014/04/18 职场文书
亲子阅读的活动方案
2014/08/15 职场文书
群众路线个人对照检查材料
2014/09/23 职场文书
2014年图书馆工作总结
2014/11/25 职场文书
毕业班班主任工作总结2015
2015/07/23 职场文书