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 相关文章推荐
基于Web标准的UI组件 — 树状菜单(2)
Sep 18 Javascript
JS解密入门 最终变量劫持
Jun 25 Javascript
jQuery一步一步实现跨浏览器的可编辑表格,支持IE、Firefox、Safari、Chrome、Opera
Aug 28 Javascript
jQuery的实现原理的模拟代码 -3 事件处理
Aug 03 Javascript
ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题
Dec 11 Javascript
jQuery实现自定义checkbox和radio样式
Jul 13 Javascript
jQuery简单验证上传文件大小及类型的方法
Jun 02 Javascript
Bootstrap对话框使用实例讲解
Sep 24 Javascript
基于JS代码实现简单易用的倒计时 x 天 x 时 x 分 x 秒效果
Jul 13 Javascript
微信小程序实现留言板功能
Nov 02 Javascript
vue登录页面cookie的使用及页面跳转代码
Jul 10 Javascript
vue + axios get下载文件功能
Sep 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 define函数的使用说明
2008/08/27 PHP
php提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
2012/03/27 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
Laravel使用Queue队列的技巧汇总
2019/09/02 PHP
Laravel统一错误处理为JSON的方法介绍
2020/10/18 PHP
多广告投放代码 推荐
2006/11/13 Javascript
javascript jQuery $.post $.ajax用法
2008/07/09 Javascript
javascript实现的右下角弹窗实例
2015/04/24 Javascript
JavaScript对象数组如何按指定属性和排序方向进行排序
2016/06/15 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
2016/12/16 Javascript
JQuery实现动态操作表格
2017/01/11 Javascript
微信小程序商品详情页的底部弹出框效果
2020/11/16 Javascript
vue动态绘制四分之三圆环图效果
2019/09/03 Javascript
JS Array.from()将伪数组转换成数组的方法示例
2020/03/23 Javascript
JavaScript 链表定义与使用方法示例
2020/04/28 Javascript
[02:44]DOTA2英雄基础教程 魅惑魔女
2014/01/07 DOTA
[45:59]EG vs OG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
[02:38]DOTA2 夜魇暗潮2020活动介绍官方视频
2020/11/04 DOTA
python实现人人自动回复、抢沙发功能
2018/06/08 Python
对Python 数组的切片操作详解
2018/07/02 Python
CentOS7下python3.7.0安装教程
2018/07/30 Python
python找出完数的方法
2018/11/12 Python
Python 一句话生成字母表的方法
2019/01/02 Python
python快速编写单行注释多行注释的方法
2019/07/31 Python
Python vtk读取并显示dicom文件示例
2020/01/13 Python
python将字典内容写入json文件的实例代码
2020/08/12 Python
用python对excel查重
2020/12/07 Python
python 使用OpenCV进行简单的人像分割与合成
2021/02/02 Python
KEETSA环保床垫:更好的睡眠,更好的生活!
2016/11/24 全球购物
英国设计的甲板鞋和船鞋:Chatham
2018/12/06 全球购物
自考生自我评价分享
2014/01/18 职场文书
公司委托书范本
2014/04/04 职场文书
业绩倒数第一的检讨书
2014/09/24 职场文书
人为什么会“幸灾乐祸”?
2019/08/06 职场文书
导游词之任弼时故居
2020/01/07 职场文书
Python中的np.argmin()和np.argmax()函数用法
2021/06/02 Python