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 相关文章推荐
关于juqery radio写法的兼容性问题(新老版本jquery)
Jun 14 Javascript
在JavaScript中获取请求的URL参数
Dec 22 Javascript
JavaScript驾驭网页-CSS与DOM
Mar 24 Javascript
AngularJS优雅的自定义指令
Jul 01 Javascript
基于jQuery实现表格的查看修改删除
Aug 01 Javascript
js实现把图片的绝对路径转为base64字符串、blob对象再上传
Dec 29 Javascript
微信小程序 在线支付功能的实现
Mar 14 Javascript
jQuery上传插件webupload使用方法
Aug 01 jQuery
使用SVG基本操作API的实例讲解
Sep 14 Javascript
VeeValidate 的使用场景以及配置详解
Jan 11 Javascript
关于JavaScript中异步/等待的用法与理解
Nov 18 Javascript
React 并发功能体验(前端的并发模式)
Jul 01 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
1982年日本摄影师镜头下的中国孩子 那无忧无虑的童年
2020/03/12 杂记
转换中文日期的PHP程序
2006/10/09 PHP
用PHP和ACCESS写聊天室(五)
2006/10/09 PHP
phplock(php进程锁) v1.0 beta1
2009/11/24 PHP
Laravel框架基于ajax实现二级联动功能示例
2019/01/17 PHP
编写可维护面向对象的JavaScript代码[翻译]
2011/02/12 Javascript
模拟多级复选框效果的jquery代码
2013/08/13 Javascript
Javascript改变CSS样式(局部和全局)
2013/12/18 Javascript
JS操作iframe里的dom(实例讲解)
2014/01/29 Javascript
javascript版的in_array函数(判断数组中是否存在特定值)
2014/05/09 Javascript
JavaScript中的分号插入机制详细介绍
2015/02/11 Javascript
jQuery处理图片加载失败的常用方法
2015/06/08 Javascript
JavaScript截断字符串的方法
2015/07/15 Javascript
微信小程序页面间通信的5种方式
2017/03/31 Javascript
基于node.js express mvc轻量级框架实践
2017/09/14 Javascript
JS改变页面颜色源码分享
2018/02/24 Javascript
Vue入门之数量加减运算操作示例
2018/12/11 Javascript
如何为vue的项目添加单元测试
2018/12/19 Javascript
jQuery实现获取当前鼠标位置并输出功能示例
2019/01/05 jQuery
layui 数据表格+分页+搜索+checkbox+缓存选中项数据的方法
2019/09/21 Javascript
JavaScript Array.flat()函数用法解析
2020/09/02 Javascript
python避免死锁方法实例分析
2015/06/04 Python
解决python3中解压zip文件是文件名乱码的问题
2018/03/22 Python
12个步骤教你理解Python装饰器
2019/07/01 Python
Django 静态文件配置过程详解
2019/07/23 Python
Python自动化办公Excel模块openpyxl原理及用法解析
2020/11/05 Python
python asyncio 协程库的使用
2021/01/21 Python
CSS3制作酷炫的条纹背景
2017/11/09 HTML / CSS
美国职棒大联盟官方网上商店:MLBShop.com
2017/11/12 全球购物
Ibatis如何调用存储过程
2015/05/15 面试题
Java基础知识面试要点
2016/07/29 面试题
J2ee常用的设计模式?说明工厂模式
2015/05/21 面试题
党员一帮一活动总结
2014/07/08 职场文书
医药公司采购员岗位职责
2014/09/12 职场文书
调解协议书范本
2016/03/21 职场文书
Python中OpenCV实现简单车牌字符切割
2021/06/11 Python