JavaScript中的异常捕捉介绍


Posted in Javascript onDecember 31, 2014

与Java语言相同,JavaScript可以通过throw语句来抛出异常。与Java语言不同的是,JavaScript中可以通过throw语句抛出所有类型的值,而不仅止于抛出错误对象。

//Throw an Error object.

try{

  throw new Error("Message in Error Object");

}catch(e){

    console.log(e);//Error: Message in Error Object

}
try{

  throw "Raw Message";

}catch(message){

  console.log(message);//Raw Message

  console.log(typeof message);//string

}
try{

  throw 42;

}catch(code){

  console.log(code);//42

  console.log(typeof code);//number

}

与Java语言一样,如果异常没有被任何catch语句所捕捉,那么该异常会最终抛给用户:

try{

  //throw new Error("test error");//Error will be thrown. Error: test error

}finally{

}
try{

  throw 42;//Error will be thrown. Error: 42

}finally{

}

对于抛出异常的捕捉,JavaScript使用的也是try/catch/finally语句,其使用规则为:try是必需的,catch和finally均为可选语句,但catch和finally中必须至少出现一个。

在catch语句中,可以定义一个参数e(或者其它任何合法的变量名),用于存储抛出的异常值。在catch语句内部,这个参数可以作为局部变量而使用。与JavaScript中其它的变量使用情况不同的是,catch语句中的参数变量仅在catch语句内部有效(该变量的作用域局限在catch语句中)。

对于finally语句,无论try中是否有异常抛出,finally中的代码均会被执行。详细情况包括:

1.try中无异常发生,当try语句执行完毕后,finnally中的代码将被执行。
2.try中无异常发生,但由于执行了break、continue或return语句而导致退出try代码时,finally中的代码将被执行。
3.try中发生异常,异常由catch语句处理完成后,finally中的代码被执行。
4.try中发生异常,但因没有catch语句导致该异常需要继续向上抛出时,finally中的代码将被执行。值得注意的是,在catch语句缺失的情况下,JavaScript将先执行finally中的代码,然后才向上继续抛出异常。

在finally代码中,如果出现break、continue或return语句,那么JavaScript将直接执行这些语句,而置try代码中可能存在的break、continue或return语句于不顾;即使catch语句缺失导致有异常需要上报,JS也会丢弃这个异常上报信息,继续执行finally代码中的break、continue或return语句。类似的,如果finally代码中也抛出了异常,那么JavaScript将丢弃所有try代码中的break、continue或return语句,同时也丢弃可能存在的异常上报行为,只抛出finally代码中的异常。

Javascript 相关文章推荐
form.submit()不能提交表单的错误原因及解决方法
Oct 13 Javascript
JavaScript中的6种运算符总结
Oct 16 Javascript
jQuery实现的简单折叠菜单(折叠面板)效果代码
Sep 16 Javascript
javascript运动效果实例总结(放大缩小、滑动淡入、滚动)
Jan 08 Javascript
Bootstrap所支持的表单控件实例详解
May 16 Javascript
Agularjs妙用双向数据绑定实现手风琴效果
May 26 Javascript
jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】
Jun 26 jQuery
JavaScript严格模式下关于this的几种指向详解
Jul 12 Javascript
使用Bootstrap + Vue.js实现表格的动态展示、新增和删除功能
Nov 27 Javascript
Node.js中sequelize时区的配置方法
Dec 10 Javascript
JavaScript实现好看的跟随彩色气泡效果
Feb 06 Javascript
使用jQuery实现购物车
Oct 29 jQuery
JavaScript中对象介绍
Dec 31 #Javascript
JavaScript中用字面量创建对象介绍
Dec 31 #Javascript
javascript设计模式之中介者模式Mediator
Dec 30 #Javascript
javascript实现window.print()去除页眉页脚
Dec 30 #Javascript
Javascript访问器属性实例分析
Dec 30 #Javascript
Javascript中数组sort和reverse用法分析
Dec 30 #Javascript
jQuery中:visible选择器用法实例
Dec 30 #Javascript
You might like
Get或Post提交值的非法数据处理
2006/10/09 PHP
基于命令行执行带参数的php脚本并取得参数的方法
2016/01/25 PHP
PHP中PDO的事务处理分析
2016/04/07 PHP
php生成带logo二维码方法小结
2016/04/08 PHP
JQuery实现自定义对话框的代码
2008/06/15 Javascript
javascript window对象属性整理
2009/10/24 Javascript
浅析Node.js中的内存泄漏问题
2015/06/23 Javascript
JavaScript位移运算符(无符号) >>> 三个大于号 的使用方法详解
2016/03/31 Javascript
jQuery实现对无序列表的排序功能(附demo源码下载)
2016/06/25 Javascript
JavaScript获取当前时间向前推三个月的方法示例
2017/02/04 Javascript
js Canvas绘制圆形时钟效果
2017/02/17 Javascript
BootStrap+Mybatis框架下实现表单提交数据重复验证
2017/03/23 Javascript
JavaScript实现的简单加密解密操作示例
2018/06/01 Javascript
Javascript中的奇葩知识,你知道吗?
2021/01/25 Javascript
python实现同时给多个变量赋值的方法
2015/04/30 Python
使用Python爬取最好大学网大学排名
2018/02/24 Python
Python3.7 dataclass使用指南小结
2019/02/22 Python
Python计算公交发车时间的完整代码
2020/02/12 Python
Python关于反射的实例代码分享
2020/02/20 Python
在脚本中单独使用django的ORM模型详解
2020/04/01 Python
你应该知道的Python3.6、3.7、3.8新特性小结
2020/05/12 Python
python中def是做什么的
2020/06/10 Python
python利用platform模块获取系统信息
2020/10/09 Python
详解python3类型注释annotations实用案例
2021/01/20 Python
Lands’ End英国官方网站:高质量男女服装
2017/10/07 全球购物
世界上最大的罕见唱片、CD和音乐纪念品网上商店:991.com
2018/05/03 全球购物
德国自行车商店:Tretwerk
2019/06/21 全球购物
高中生学习生活的自我评价
2013/10/09 职场文书
测绘工程系学生的自我评价
2013/11/30 职场文书
大门门卫岗位职责
2013/11/30 职场文书
策划创业计划书
2014/02/06 职场文书
财务会计大学生自我评价
2014/04/09 职场文书
小学捐书活动总结
2014/07/05 职场文书
工商管理自荐书
2014/07/06 职场文书
报案材料怎么写
2015/05/25 职场文书
2016春季幼儿园开学寄语
2015/12/03 职场文书