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插件制作 图片走廊 gallery
Aug 17 Javascript
js里取容器大小、定位、距离等属性搜集整理
Aug 19 Javascript
JS实现可展开折叠层的鼠标拖曳效果
Oct 09 Javascript
javascript学习小结之prototype
Dec 03 Javascript
JavaScript使用ZeroClipboard操作剪切板
May 10 Javascript
Node.js如何实现注册邮箱激活功能 (常见)
Jul 23 Javascript
浅谈JS中的反柯里化( uncurrying)
Aug 17 Javascript
vue 路由页面之间实现用手指进行滑动的方法
Feb 23 Javascript
JQuery扩展对象方法操作示例
Aug 21 jQuery
微信小程序非swiper组件实现的自定义伪3D轮播图效果示例
Dec 11 Javascript
微信小程序返回箭头跳转到指定页面实例解析
Oct 08 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
Feb 12 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 number_format() 函数定义和用法
2012/06/01 PHP
PHP生成唯一的促销/优惠/折扣码(附源码)
2012/12/28 PHP
PHP 获取文件权限函数介绍
2013/07/11 PHP
php中cookie的使用方法
2014/03/29 PHP
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
Javacript实现颜色梯度变化和渐变的效果代码
2013/05/31 Javascript
HTML5游戏引擎LTweenLite实现的超帅动画效果(附demo源码下载)
2016/01/26 Javascript
深入浅析Bootstrap列表组组件
2016/05/03 Javascript
jQuery中设置form表单中action值的实现方法
2016/05/25 Javascript
多种jQuery绑定事件的实现方式
2016/06/13 Javascript
浅析使用BootStrap TreeView插件实现灵活配置快递模板
2016/11/28 Javascript
浅谈ajax请求不同页面的微信JSSDK问题
2018/02/26 Javascript
vue-cli构建项目下使用微信分享功能
2018/05/28 Javascript
微信小程序基于Taro的分享图片功能实践详解
2019/07/12 Javascript
微信接入之获取用户头像的方法步骤
2019/09/23 Javascript
解决包含在label标签下的checkbox在ie8及以下版本点击事件无效果兼容的问题
2019/10/27 Javascript
JS禁用右键、禁用Ctrl+u、禁用Ctrl+s、禁用F12的实现代码
2020/12/01 Javascript
[02:53]2018年度DOTA2最佳战队-完美盛典
2018/12/17 DOTA
python网络编程调用recv函数完整接收数据的三种方法
2017/03/31 Python
Flask框架WTForm表单用法示例
2018/07/20 Python
Python之lambda匿名函数及map和filter的用法
2019/03/05 Python
windows下numpy下载与安装图文教程
2019/04/02 Python
PyQt5固定窗口大小的方法
2019/06/18 Python
python cumsum函数的具体使用
2019/07/29 Python
Python使用import导入本地脚本及导入模块的技巧总结
2019/08/07 Python
欧洲最大的化妆品连锁公司:Douglas道格拉斯
2017/05/06 全球购物
Speedo速比涛德国官方网站:世界领先的泳装品牌
2019/08/26 全球购物
英国领先的餐饮折扣俱乐部:Gourmet Society
2020/07/26 全球购物
Wiggle澳大利亚:自行车、跑步、游泳商店
2020/11/07 全球购物
如何在存储过程中使用Loop
2016/01/05 面试题
庆中秋节主题活动方案
2014/02/03 职场文书
幼儿园大班毕业感言
2014/02/06 职场文书
军训自我鉴定200字
2014/02/13 职场文书
运动员入场词
2015/07/18 职场文书
幼儿园教师教学反思
2016/03/02 职场文书
PHP设计模式(观察者模式)
2021/07/07 PHP