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 相关文章推荐
JavaScript中令你抓狂的魔术变量
Nov 30 Javascript
制作高质量的JQuery Plugin 插件的方法
Apr 20 Javascript
js根据给定的日期计算当月有多少天实现思路及代码
Feb 25 Javascript
javascript(js)的小数点乘法除法问题详解
Mar 07 Javascript
基于angularJS的表单验证指令介绍
Oct 21 Javascript
基于jQuery实现火焰灯效果导航菜单
Jan 04 Javascript
Vue数据双向绑定的深入探究
Nov 27 Javascript
webpack4.0+vue2.0利用批处理生成前端单页或多页应用的方法
Jun 28 Javascript
mock.js模拟前后台交互
Jul 25 Javascript
解决Vue打包上线之后部分CSS不生效的问题
Nov 12 Javascript
JavaScript进阶(四)原型与原型链用法实例分析
May 09 Javascript
在vue中使用image-webpack-loader实例
Nov 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中的MVC模式运用技巧
2007/05/03 PHP
PHP反向代理类代码
2014/08/15 PHP
PHP性能测试工具xhprof安装与使用方法详解
2018/04/29 PHP
JSON PHP中,Json字符串反序列化成对象/数组的方法
2018/05/31 PHP
PHP设计模式之策略模式原理与用法实例分析
2019/04/04 PHP
[原创]PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】
2019/07/12 PHP
php+layui数据表格实现数据分页渲染代码
2019/10/26 PHP
javascript中的location用法简单介绍
2007/03/07 Javascript
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
2007/04/12 Javascript
广告代码静态化js通用函数
2007/05/09 Javascript
jQuery语法高亮插件支持各种程序源代码语法着色加亮
2013/04/27 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
2014/02/11 Javascript
JavaScript获取表单enctype属性的方法
2015/04/02 Javascript
AngularJS教程之MVC体系结构详解
2016/08/16 Javascript
基于Node的React图片上传组件实现实例代码
2017/05/10 Javascript
React-router中结合webpack实现按需加载实例
2017/05/25 Javascript
详解在AngularJS的controller外部直接获取$scope
2017/06/02 Javascript
React-intl 实现多语言的示例代码
2017/11/03 Javascript
angular2系列之路由转场动画的示例代码
2017/11/09 Javascript
swiper 解决动态加载数据滑动失效的问题
2018/02/26 Javascript
使用vue-route 的 beforeEach 实现导航守卫(路由跳转前验证登录)功能
2018/03/22 Javascript
使用异步controller与jQuery实现卷帘式分页
2019/06/18 jQuery
基于JavaScript判断两个对象内容是否相等
2020/01/10 Javascript
简单的Apache+FastCGI+Django配置指南
2015/07/22 Python
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
2017/10/01 Python
rabbitmq(中间消息代理)在python中的使用详解
2017/12/14 Python
Python使用matplotlib的pie函数绘制饼状图功能示例
2018/01/08 Python
Tensorflow卷积神经网络实例
2018/05/24 Python
django中模板的html自动转意方法
2018/05/27 Python
python 实现调用子文件下的模块方法
2018/12/07 Python
pyqt5移动鼠标显示坐标的方法
2019/06/21 Python
python3.8 微信发送服务器监控报警消息代码实现
2019/11/05 Python
python实现文字版扫雷
2020/04/24 Python
办理房产证委托书
2014/09/18 职场文书
清洁工个人工作总结
2015/03/05 职场文书
高中数学课堂教学反思
2016/02/18 职场文书