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 相关文章推荐
Easy.Ajax 部分源代码 支持文件上传功能, 兼容所有主流浏览器
Feb 24 Javascript
基于jQuery+HttpHandler实现图片裁剪效果代码(适用于论坛, SNS)
Sep 02 Javascript
js Canvas实现圆形时钟教程
Sep 19 Javascript
jQuery得到多个值只能用取Class ,不能用取ID的方法
Dec 04 Javascript
AngularJS Select(选择框)使用详解
Jan 18 Javascript
JS实现简单抖动效果
Jun 01 Javascript
基于jquery实现多级菜单效果
Jul 25 jQuery
node.js的exports、module.exports与ES6的export、export default深入详解
Oct 26 Javascript
React手稿之 React-Saga的详解
Nov 12 Javascript
详解JavaScript 为什么要有 Symbol 类型?
Apr 03 Javascript
初学node.js中实现删除用户路由
May 27 Javascript
微信小程序页面间跳转传参方式总结
Jun 13 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
Windows下安装Memcached的步骤说明
2010/04/25 PHP
ajax取消挂起请求的处理方法
2013/03/18 PHP
PHP编程快速实现数组去重的方法详解
2017/07/22 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
ie下动态加态js文件的方法
2011/09/13 Javascript
图片在浏览器中底部对齐 解决方法之一
2011/11/30 Javascript
jQuery ajax(复习)—Baidu ajax request分离版
2013/01/24 Javascript
如何设置iframe高度自适应在跨域情况下的可用方法
2013/09/06 Javascript
JavaScript中使用arguments获得函数传参个数实例
2014/08/27 Javascript
jQuery操作cookie方法实例教程
2014/11/25 Javascript
node.js+Ajax实现获取HTTP服务器返回数据
2014/11/26 Javascript
AngularJS快速入门
2015/04/02 Javascript
详解jQuery Mobile自定义标签
2016/01/06 Javascript
jQuery日程管理控件glDatePicker用法详解
2017/03/29 jQuery
JavaScript闭包的简单应用
2017/09/01 Javascript
详解利用 Vue.js 实现前后端分离的RBAC角色权限管理
2017/09/15 Javascript
webpack v4 从dev到prd的方法
2018/04/02 Javascript
p5.js实现简单货车运动动画
2019/10/23 Javascript
webpack 动态批量加载文件的实现方法
2020/03/19 Javascript
JavaScript内置对象之Array的使用小结
2020/05/12 Javascript
node koa2 ssr项目搭建的方法步骤
2020/12/11 Javascript
vue实现简易计算器功能
2021/01/20 Vue.js
Python3+django2.0+apache2+ubuntu14部署网站上线的方法
2018/07/07 Python
Python的matplotlib绘图如何修改背景颜色的实现
2019/07/16 Python
python并发爬虫实用工具tomorrow实用解析
2019/09/25 Python
使用Python三角函数公式计算三角形的夹角案例
2020/04/15 Python
Python自动化之UnitTest框架实战记录
2020/09/08 Python
Python的scikit-image模块实例讲解
2020/12/30 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
2021/02/25 Python
Reebonz中国官网:新加坡奢侈品购物网站
2017/03/17 全球购物
TOWER London官网:鞋子、靴子、运动鞋等
2019/07/14 全球购物
服务员岗位责任制
2014/02/11 职场文书
五四青年节优秀演讲稿范文
2014/05/28 职场文书
县委班子四风对照检查材料思想汇报
2014/09/29 职场文书
幼儿园教师教学反思
2016/03/02 职场文书
Pycharm连接远程服务器并远程调试的全过程
2021/06/24 Python