javascript 中的try catch应用总结


Posted in Javascript onApril 01, 2017

javascript 中的try catch应用总结

实例代码:

<script language="JavaScript"> 
try 
{ 
throw new Error(10,"asdasdasd") 
} 
catch (e) 
{ 
alert(e.message); 
alert(e.description) 
alert(e.number) 
alert(e.name) 
throw new Error(10,"asdasdasd") 
} 

</script>

在JavaScript可以使用try...catch来进行异常处理。例如: 

try {
 foo.bar();
} catch (e) {
 alert(e.name + ": " + e.message);
}

目前我们可能得到的系统异常主要包含以下6种:

  1. EvalError: raised when an error occurs executing code in eval() 
  2. RangeError: raised when a numeric variable or parameter is outside of its valid range 
  3. ReferenceError: raised when de-referencing an invalid reference 
  4. SyntaxError: raised when a syntax error occurs while parsing code in eval() 
  5. TypeError: raised when a variable or parameter is not a valid type 
  6. URIError: raised when encodeURI() or decodeURI() are passed invalid parameters 

上面的六种异常对象都继承自Error对象。他们都支持以下两种构造方法:

new Error();
new Error("异常信息");

手工抛出异常的方法如下:

try {
 throw new Error("Whoops!");
} catch (e) {
 alert(e.name + ": " + e.message);
}

如要判断异常信息的类型,可在catch中进行判断:

try {
 foo.bar();
} catch (e) {
 if (e instanceof EvalError) {
   alert(e.name + ":" + e.message);
 } 
 else if (e instanceof RangeError) {
   alert(e.name + ": " + e.message);
 } 
 // etc 
}

Error具有下面一些主要属性:

  1. description: 错误描述 (仅IE可用). 
  2. fileName: 出错的文件名 (仅Mozilla可用). 
  3. lineNumber: 出错的行数 (仅Mozilla可用). 
  4. message: 错误信息 (在IE下同description) 
  5. name: 错误类型. 
  6. number: 错误代码 (仅IE可用). 
  7. stack: 像Java中的Stack Trace一样的错误堆栈信息 (仅Mozilla可用). 

因此为了更好的了解错误信息我们可以将catch部分改为如下形式: 

try {
 foo.bar();
} catch (e) {
 if (browserType != BROWSER_IE) {                
   alert("name: " + e.name + 
   "message: " + e.message + 
   "lineNumber: " + e.lineNumber + 
   "fileName: " + e.fileName + 
   "stack: " + e.stack);      
 } 
 else {            
   alert("name: " + e.name +    
   "errorNumber: " + (e.number & 0xFFFF ) + 
   "message: " + e.message");      
 } 
}

JavaScript中的throw命令事实上可以抛出任何对象,并且我们可以在catch接受到此对象。例如:

try {
 throw new Date(); // 抛出当前时间对象 
} catch (e) {
 alert(e.toLocaleString()); // 使用本地格式显示当前时间 
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
jQuery 性能优化指南(2)
May 21 Javascript
js获取元素在浏览器中的绝对位置
Jul 24 Javascript
JS不间断向上滚动效果代码
Dec 25 Javascript
JS实现局部选择打印和局部不选择打印
Apr 03 Javascript
javascript实现图像循环明暗变化的方法
Feb 25 Javascript
JS中处理时间之setUTCMinutes()方法的使用
Jun 12 Javascript
Vue.js组件tab实现选项卡切换
Mar 23 Javascript
JavaScript数据结构之双向链表定义与使用方法示例
Oct 27 Javascript
简述JS浏览器的三种弹窗
Jul 15 Javascript
Element输入框带历史查询记录的实现示例
Jan 15 Javascript
JavaScript回调函数callback用法解析
Jan 14 Javascript
angular4实现带搜索的下拉框
Mar 25 Javascript
JavaScript 事件流、事件处理程序及事件对象总结
Apr 01 #Javascript
ES6新特性之字符串的扩展实例分析
Apr 01 #Javascript
Vue.js实战之利用vue-router实现跳转页面
Apr 01 #Javascript
ES6新特性之函数的扩展实例详解
Apr 01 #Javascript
vue-cli的webpack模板项目配置文件分析
Apr 01 #Javascript
ES6新特性之模块Module用法详解
Apr 01 #Javascript
Vue.js实战之组件之间的数据传递
Apr 01 #Javascript
You might like
php随机显示图片的简单示例
2014/02/15 PHP
深入讲解PHP的对象注入(Object Injection)
2017/03/01 PHP
PHP命名空间namespace的定义方法详解
2017/03/29 PHP
PHP使用Nginx实现反向代理
2017/09/20 PHP
Array.slice()与Array.splice()的返回值类型
2006/10/09 Javascript
jQuery的三种$()
2009/12/30 Javascript
理解Javascript_07_理解instanceof实现原理
2010/10/15 Javascript
jquery getScript动态加载JS方法改进详解
2012/11/15 Javascript
JavaScript中的undefined学习总结
2013/11/30 Javascript
jQuery如何将选中的对象转化为原始的DOM对象
2014/06/09 Javascript
JS实现文字放大效果的方法
2015/03/03 Javascript
javascript实现checkBox的全选,反选与赋值
2015/03/12 Javascript
JS解析XML文件和XML字符串详解
2015/04/17 Javascript
基于jQuery的Web上传插件Uploadify使用示例
2016/05/19 Javascript
jQuery实现为LI列表前3行设置样式的方法【2种方法】
2016/09/04 Javascript
jQuery实现简单漂亮的Nav导航菜单效果
2017/03/29 jQuery
详解nodeJs文件系统(fs)与流(stream)
2018/01/24 NodeJs
原生JavaScript实现拖动校验功能
2020/09/29 Javascript
[00:48]DOTA2国际邀请赛公开赛报名开始 扫码开启逐梦之旅
2018/06/06 DOTA
跟老齐学Python之集合(set)
2014/09/24 Python
python线程池(threadpool)模块使用笔记详解
2017/11/17 Python
python脚本开机自启的实现方法
2019/06/28 Python
Python读入mnist二进制图像文件并显示实例
2020/04/24 Python
Python基础教程之输入输出和运算符
2020/07/26 Python
Shopty西班牙:缝纫机在线销售
2018/01/26 全球购物
eDreams德国:南欧领先的在线旅游公司
2020/12/07 全球购物
C#和SQL Server的面试题
2016/08/12 面试题
J2EE系统只能是基于web
2015/09/08 面试题
自主招生自荐信
2013/12/08 职场文书
总经理职责
2013/12/22 职场文书
伦敦奥运会口号
2014/06/13 职场文书
兽医医药专业求职信
2014/07/27 职场文书
公司表扬稿范文
2015/05/05 职场文书
2015迎新晚会开场白
2015/05/29 职场文书
纪检部部长竞选稿
2015/11/21 职场文书
Github 使用python对copilot做些简单使用测试
2022/04/14 Python