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 相关文章推荐
js与jQuery 获取父窗、子窗的iframe
Dec 20 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
Mar 10 Javascript
js实现宇宙星空背景效果的方法
Mar 03 Javascript
JavaScript中文件上传API详解
Apr 01 Javascript
全面解析Bootstrap中tooltip、popover的使用方法
Jun 13 Javascript
Bootstrap页面布局基础知识全面解析
Jun 13 Javascript
jQuery插件EasyUI实现Layout框架页面中弹出窗体到最顶层效果(穿越iframe)
Aug 05 Javascript
AngularJs验证重复密码的方法(两种)
Nov 25 Javascript
AngularJS实现网站换肤实例
Feb 19 Javascript
layui 表单标签的校验方法
Sep 04 Javascript
vue 实现走马灯效果
Oct 28 Javascript
React Hook用法示例详解(6个常见hook)
Apr 28 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
在普通HTTP上安全地传输密码
2007/07/21 PHP
PHP开源开发框架ZendFramework使用中常见问题说明及解决方案
2014/06/12 PHP
php通过array_merge()函数合并两个数组的方法
2015/03/18 PHP
Json_decode 解析json字符串为NULL的解决方法(必看)
2017/02/17 PHP
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
2013/06/25 Javascript
js 3种归并操作的实例代码
2013/10/30 Javascript
javascript结合Canvas 实现简易的圆形时钟
2015/03/11 Javascript
最精简的JavaScript实现鼠标拖动效果的方法
2015/05/11 Javascript
Javascript实现网络监测的方法
2015/07/31 Javascript
js仿3366小游戏选字游戏
2016/04/14 Javascript
JavaScript简单获取页面图片原始尺寸的方法
2016/06/21 Javascript
js编写三级联动简单案例
2016/12/21 Javascript
JS实现多张图片预览同步上传功能
2017/06/23 Javascript
去掉vue 中的代码规范检测两种方法(Eslint验证)
2018/03/21 Javascript
详解vue移动端项目的适配(以mint-ui为例)
2018/08/17 Javascript
Vue环境搭建+VSCode+Win10的详细教程
2020/08/19 Javascript
js实现简易拖拽的示例
2020/10/26 Javascript
Taro小程序自定义顶部导航栏功能的实现
2020/12/17 Javascript
[10:04]国际邀请赛采访专栏:DK.Farseer,mouz.Black^,采访员Josh专访
2013/08/05 DOTA
Python访问MySQL封装的常用类实例
2014/11/11 Python
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
2016/06/29 Python
python实现校园网自动登录的示例讲解
2018/04/22 Python
python实现贪吃蛇游戏
2020/03/21 Python
python中upper是做什么用的
2020/07/20 Python
css3实现文字首尾衔接跑马灯的示例代码
2020/10/16 HTML / CSS
Lime Crime官网:美国一家主打梦幻精灵系的彩妆品牌
2019/03/22 全球购物
以太网Ethernet IEEE802.3
2013/08/05 面试题
Linux文件系统类型
2012/02/15 面试题
企业员工培训感言
2014/02/26 职场文书
2015届大学生就业推荐表自我评价
2014/09/27 职场文书
公司租房协议书
2014/10/14 职场文书
团代会开幕词
2015/01/28 职场文书
罚款通知怎么写
2015/04/22 职场文书
2015秋季开学演讲稿范文
2015/07/16 职场文书
redis 限制内存使用大小的实现
2021/05/08 Redis
pandas提升计算效率的一些方法汇总
2021/05/30 Python