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 文章截取部分无损html显示实现代码
May 04 Javascript
ExtJS如何设置与获取radio控件的选取状态
Jan 22 Javascript
javascript实现无限级select联动菜单
Jan 02 Javascript
Javascript中的数据类型之旅
Oct 18 Javascript
简单实现JavaScript图片切换效果
Nov 28 Javascript
jQuery插件Validation表单验证详解
May 26 jQuery
小程序视频列表中视频的播放与停止的示例代码
Jul 20 Javascript
vue中组件的过渡动画及实现代码
Nov 21 Javascript
jQuery中使用validate插件校验表单功能
May 24 jQuery
JavaScript实现五子棋游戏的方法详解
Jul 08 Javascript
HTML元素拖拽功能实现的完整实例
Dec 04 Javascript
Vue包大小优化的实现(从1.72M到94K)
Feb 18 Vue.js
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正则的Unknown Modifier错误解决方法
2010/03/02 PHP
洪恩在线成语词典小偷程序php版
2012/04/20 PHP
php实现快速排序法函数代码
2012/08/27 PHP
smarty内置函数config_load用法实例
2015/01/22 PHP
PDO的安全处理与事物处理方法
2016/10/31 PHP
7个Javascript地图脚本整理
2009/10/20 Javascript
离开当前页面前使用js判断条件提示是否要离开页面
2014/05/02 Javascript
全面了解构造函数继承关键apply call
2016/07/26 Javascript
详解Node.js如何开发命令行工具
2016/08/14 Javascript
JS 滚动事件window.onscroll与position:fixed写兼容IE6的回到顶部组件
2016/10/10 Javascript
Angular.Js之Scope作用域的学习教程
2017/04/27 Javascript
jQuery选择器中的特殊符号处理方法
2017/09/08 jQuery
Mac下通过brew安装指定版本的nodejs教程
2018/05/17 NodeJs
layui问题之模拟select点击事件的实例讲解
2018/08/15 Javascript
layui 实现二级弹窗弹出之后 关闭一级弹窗的方法
2019/09/18 Javascript
Python字符遍历的艺术
2008/09/06 Python
Python的Flask开发框架简单上手笔记
2015/11/16 Python
python数据分析数据标准化及离散化详解
2018/02/26 Python
python pandas dataframe 按列或者按行合并的方法
2018/04/12 Python
Python中判断输入是否为数字的实现代码
2018/05/26 Python
利用arcgis的python读取要素的X,Y方法
2018/12/22 Python
django使用xadmin的全局配置详解
2019/11/15 Python
HTML5 Canvas渐进填充与透明实现图像的Mask效果
2013/07/11 HTML / CSS
使用layui框架实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果
2020/11/10 HTML / CSS
J.Crew官网:美国知名休闲服装品牌
2017/05/19 全球购物
KIKO MILANO西班牙官网:意大利领先的化妆品和护肤品品牌
2019/05/03 全球购物
进程的查看和调度分别使用什么命令
2015/03/25 面试题
建筑工程专业学生的自我评价
2013/12/25 职场文书
2014年父亲节活动方案
2014/03/06 职场文书
个人授权委托书
2014/04/03 职场文书
房屋财产继承协议书范本
2014/11/03 职场文书
学习保证书怎么写
2015/02/26 职场文书
家长会后的感想
2015/08/11 职场文书
如何用JS实现简单的数据监听
2021/05/06 Javascript
Python进阶学习之带你探寻Python类的鼻祖-元类
2021/05/08 Python
mysql sock 文件解析及作用讲解
2022/07/15 MySQL