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 相关文章推荐
SharePoint 客户端对象模型 (一) ECMA Script
May 22 Javascript
浅析JS中document对象的一些重要属性
Mar 06 Javascript
js实现网页倒计时、网站已运行时间功能的代码3例
Apr 14 Javascript
禁止iframe脚本弹出的窗口覆盖了父窗口的方法
Sep 06 Javascript
jquery zTree异步加载简单实例讲解
Feb 25 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
Oct 24 Javascript
javascript入门之window对象【新手必看】
Nov 22 Javascript
IE8兼容Jquery.validate.js的问题
Dec 01 Javascript
jQuery实现元素的插入
Feb 27 Javascript
浅谈regExp的test方法取得的值变化的原因及处理方法
Mar 01 Javascript
layui实现根据table数据判断按钮显示情况的方法
Sep 26 Javascript
Vue 技巧之控制父类的 slot
Feb 24 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学习笔记 面向对象中[接口]与[多态性]的应用
2011/06/16 PHP
解析PHP处理换行符的问题 \r\n
2013/06/13 PHP
php根据年月获取季度的方法
2014/03/31 PHP
php 读写json文件及修改json的方法
2018/03/07 PHP
PHP加MySQL消息队列深入理解
2021/02/27 PHP
Alliance vs Liquid BO3 第一场2.13
2021/03/10 DOTA
javascript 一个自定义长度的文本自动换行的函数
2007/08/19 Javascript
教你如何解密js/vbs/vbscript加密的编码异处理小结
2008/06/25 Javascript
Domino中运用jQuery读取视图内容的方法
2009/10/21 Javascript
jquery form表单提交插件asp.net后台中文解码
2010/06/12 Javascript
jQuery Tools tab使用介绍
2012/07/14 Javascript
JavaScript自定义等待wait函数实例分析
2015/03/23 Javascript
jQuery UI Bootstrap是什么?
2016/06/17 Javascript
Bootstrap精简教程中秋大放送
2016/09/15 Javascript
利用CDN加速react webpack打包后的文件详解
2018/02/22 Javascript
vue 使用Jade模板写html,stylus写css的方法
2018/02/23 Javascript
vue.js select下拉框绑定和取值方法
2018/03/03 Javascript
element-ui中的select下拉列表设置默认值方法
2018/08/24 Javascript
超简单的微信小程序轮播图
2019/11/22 Javascript
vue-preview动态获取图片宽高并增加旋转功能的实现
2020/07/29 Javascript
详解template标签用法(含vue中的用法总结)
2021/01/12 Vue.js
python三元运算符实现方法
2013/12/17 Python
深入讲解Java编程中类的生命周期
2016/02/05 Python
Python之Numpy的超实用基础详细教程
2019/10/23 Python
Numpy与Pytorch 矩阵操作方式
2019/12/27 Python
利用keras使用神经网络预测销量操作
2020/07/07 Python
python更新数据库中某个字段的数据(方法详解)
2020/11/18 Python
scrapy处理python爬虫调度详解
2020/11/23 Python
python制作微博图片爬取工具
2021/01/16 Python
华为的Java面试题
2014/03/07 面试题
教师师德教育的自我评价
2013/10/31 职场文书
经典大学生求职信范文
2014/01/06 职场文书
房屋买卖协议样本
2014/11/16 职场文书
婚庆答谢词
2015/01/04 职场文书
2015年会计人员工作总结
2015/05/22 职场文书
深入理解Pytorch微调torchvision模型
2021/11/11 Python