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 相关文章推荐
extjs 学习笔记(二) Ext.Element类
Oct 13 Javascript
JavaScript Date对象 日期获取函数
Dec 19 Javascript
JS实现鼠标滑过显示边框的菜单效果
Sep 21 Javascript
jQuery实现根据生日计算年龄 星座 生肖
Nov 23 Javascript
学习vue.js表单控件绑定操作
Dec 05 Javascript
Bootstrap栅格系统的使用和理解2
Dec 14 Javascript
工作中常用的js、jquery自定义扩展函数代码片段汇总
Dec 22 Javascript
js模拟支付宝密码输入框
Apr 11 Javascript
详解VUE中v-bind的基本用法
Jul 13 Javascript
vue-cli 自定义指令directive 添加验证滑块示例
Oct 19 Javascript
深入浅析vue中cross-env的使用
Sep 12 Javascript
策略模式实现 Vue 动态表单验证的方法
Sep 16 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 在线打包_支持子目录
2008/06/28 PHP
php编写的抽奖程序中奖概率算法
2015/05/14 PHP
jquery 的 $(&quot;#id&quot;).html() 无内容的解决方法
2010/06/07 Javascript
基于jquery的分页控件(C#)
2011/01/06 Javascript
js操作CheckBoxList实现全选/反选(在客服端完成)
2013/02/02 Javascript
js中单引号与双引号冲突问题解决方法
2013/10/04 Javascript
JS的document.all函数使用示例
2013/12/30 Javascript
JavaScript编程中布尔对象的基本使用
2015/10/25 Javascript
简单讲解AngularJS的Routing路由的定义与使用
2016/03/05 Javascript
JavaScript实现简单Tip提示框效果
2016/04/20 Javascript
JavaScript知识点总结(十)之this关键字
2016/05/31 Javascript
关于Function中的bind()示例详解
2016/12/02 Javascript
jquery实现多次上传同一张图片
2017/01/09 Javascript
bootstrap如何让dropdown menu按钮式下拉框长度一致
2017/04/10 Javascript
详解Vue使用 vue-cli 搭建项目
2017/04/20 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
vue实现文章内容过长点击阅读全文功能的实例
2017/12/28 Javascript
JavaScript面向对象核心知识与概念归纳整理
2020/05/09 Javascript
python的random模块及加权随机算法的python实现方法
2017/01/04 Python
python中map()函数的使用方法示例
2017/09/29 Python
python调用API实现智能回复机器人
2018/04/10 Python
解决pyinstaller打包运行程序时出现缺少plotly库问题
2020/06/02 Python
细说CSS3中box属性中的overflow-x属性和overflow-y属性值的效果
2014/07/21 HTML / CSS
10种CSS3实现的loading动画,挑一个走吧?
2020/11/16 HTML / CSS
印尼最大的婴儿用品购物网站:Orami
2017/09/28 全球购物
日本最大美瞳直送网:Morecontact(中文)
2019/04/03 全球购物
印尼购物网站:iLOTTE
2019/10/16 全球购物
Hotels.com泰国:酒店预订网站
2019/11/20 全球购物
资生堂英国官网:Shiseido英国
2020/12/30 全球购物
2013年员工自我评价范文
2013/12/27 职场文书
党员三严三实心得体会
2014/10/13 职场文书
爱岗敬业事迹材料
2014/12/24 职场文书
死亡赔偿协议书
2015/01/28 职场文书
大学生违纪检讨书范文
2015/05/07 职场文书
担保书格式范文
2015/09/22 职场文书
海康机器人重磅发布全新算法开发平台VM4.2
2022/04/21 数码科技