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 火狐(firefox)不显示本地图片问题解决
Jul 05 Javascript
JavaScript DOM 学习第七章 表单的扩展
Feb 19 Javascript
jquery实现漂浮在网页右侧的qq在线客服插件示例
May 13 Javascript
通过javascript获取iframe里的值示例代码
Jun 24 Javascript
为jQuery添加Webkit的触摸的方法分享
Feb 02 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
Aug 16 Javascript
总结Javascript中的隐式类型转换
Aug 24 Javascript
JS数组返回去重后数据的方法解析
Jan 03 Javascript
80%应聘者都不及格的JS面试题
Mar 21 Javascript
webpack4 升级迁移的实现
Sep 12 Javascript
ES6知识点整理之函数数组参数的默认值及其解构应用示例
Apr 17 Javascript
vue中node_modules中第三方模块的修改使用详解
May 31 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类Class的概念
2012/06/14 PHP
深入理解php的MySQL连接类
2013/06/07 PHP
php实现背景图上添加圆形logo图标的方法
2016/11/17 PHP
php 从一个数组中随机的取出若干个不同的数实例
2016/12/31 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
PHP7 echo和print语句实例用法
2019/02/15 PHP
Thinkphp5 如何隐藏入口文件index.php(URL重写)
2019/10/16 PHP
查看大图功能代码jquery版
2013/11/05 Javascript
Javascript中this的用法详解
2014/09/22 Javascript
JavaScript学习笔记之JS函数
2015/01/22 Javascript
javascript控制层显示或隐藏的方法
2015/07/22 Javascript
你所未知的3种Node.js代码优化方式
2016/02/25 Javascript
总结JavaScript设计模式编程中的享元模式使用
2016/05/21 Javascript
jQuery插件扩展extend的简单实现原理
2016/06/24 Javascript
nodejs的HTML分析利器node-jquery用法浅析
2016/11/08 NodeJs
关于Vue.js一些问题和思考学习笔记(2)
2016/12/02 Javascript
详解Angular2 之 结构型指令
2017/06/21 Javascript
JavaScript无操作后屏保功能的实现方法
2017/07/04 Javascript
详解ES6中的三种异步解决方案
2018/06/28 Javascript
javascript显示动态时间的方法汇总
2018/07/06 Javascript
用node撸一个监测复联4开售短信提醒的实现代码
2019/04/10 Javascript
vue 需求 data中的数据之间的调用操作
2020/08/05 Javascript
利用soaplib搭建webservice详细步骤和实例代码
2013/11/20 Python
Python中enumerate函数代码解析
2017/10/31 Python
Python基本语法之运算符功能与用法详解
2019/10/22 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
2020/08/17 Python
详解pytorch中squeeze()和unsqueeze()函数介绍
2020/09/03 Python
用CSS3打造HTML5的Logo(实现代码)
2016/06/16 HTML / CSS
Can a struct inherit from another struct? (结构体能继承结构体吗)
2016/09/25 面试题
领导视察欢迎词
2014/01/15 职场文书
教师研修随笔感言
2014/01/23 职场文书
愚人节活动策划方案
2014/03/11 职场文书
小学生光盘行动倡议书
2015/04/28 职场文书
新店开张宣传语
2015/07/13 职场文书
游戏《铁拳》动画化!2022年年内播出
2022/03/21 日漫
cypress测试本地web应用
2022/06/01 Javascript