【转】 JavaScript 异常 使用throw语句抛出异常顾名思义,就是超出常规,
- 博客分类:
- 技术杂绘
【转】 JavaScript 异常 使用throw语句抛出异常顾名思义,就是超出常规,
2011年01月15日
JavaScript 异常 使用throw语句抛出异常 JavaScript 内置的7个异常
2009年04月23日 星期四 16:36
如果您开发过一些比较复杂一点的js,可能就会遇到那剪不断,理还乱的js bug,通常情况下,你通过检查js源码是看不出来的,可能花一天两天时间,反反复复检查上百遍也没效果,别浪费时间了,这很可能是js的异常!js的异常是在运行过程中发生的错误,如果您学过java中的异常,会知道这叫做runtime exception,那么什么是js异常呢?在代码的运行过程中,错误是不可避免的,总的来说,错误发生于两种情况:一是程序内部的逻辑或者语法错误,二是运行环境或者用户输入中不可预知的数据造成的错误。对于前者,就称之为错误(error),可以通过调试程序来解决;而后一种则更多的称之为异常(exception),顾名思义,就是超出常规,没有按程序设计的意愿来输入数据。当然,异常还会有许多种类型。
所以说,异常并不等价于错误,相反,有时还会利用异常来解决一些问题。JavaScript可以捕获一个异常并进行相应的处理,从而避免了浏览器向用户报错。
使用try-catch-finally处理异常
用户可以使用该结构处理可能发生异常的代码,如果发生异常,则由catch捕获并进行处理,其语法如下:
try{
//要执行的代码
}
catch(e){
//处理异常的代码
}
finally{
//无论异常发生与否,都会执行的代码
}
通过异常处理,可以避免程序停止运行,从而具有了一定的自我修复能力。
在Ajax开发中,利用异常处理的一个典型应用就是创建XMLHttpRequest对象,不同浏览器创建它的方式是不一样的,为了使代码能够跨浏览器运行,就可以利用异常,一种方法不行,再用另一种方法,直到不发生异常为止,例如:
通过这种方式,就可以跨浏览器创建XMLHttpRequest对象。注意,即使不在catch块内进行处理,catch标识及其参数e也是必须写的,否则会产生语法错误,而finnally则不是必须的。
使用throw语句抛出异常
在JavaScript中有其内部的异常机制,在遇到非法操作时能自动抛出异常。实际的开发中,随着程序的复杂,需要能自己实现异常,这可以通过throw语句来实现:
throw value;
其中value就是要抛出的异常变量,它可以是JavaScript中的任何一种类型(相当于自定义异常)。但在JavaScript内部的异常中,异常参数(即catch (e)中的e)是一个名为error的对象,可以通过new Error(message)来创建这个对象,异常的描述被作为error对象的一个属性message,可以由构造函数传入,也可以之后赋值。通过这个异常描述message,可以让程序获取异常的详细信息,从而自动处理。
下面的程序计算两个数据的和,如果参数不是数字,则抛出异常,代码如下:
Error("arguments are not numbers");
}
return a+b;
}
try{
//错误的调用
var s=sum("c","d");
}catch(e){
//显示异常的详细信息
alert(e.message);
}
// >
程序中使用字母作为参数传递给sum函数,是错误的,所以函数内抛出了一个异常对象,这个对象被catch语句获取,并使用alert语句显示了其详细信息。
注意:使用new Error(message)创建异常对象只是一种默认的习惯,也是内置异常的实现方式。这不是必需的,完全可以抛出任意数据类型的异常,例如一个整数,来作为异常的描述。只要在程序中抛出异常和捕获异常能匹配即可。
Error对象除了message属性以外,还有一些其他的属性,这些属性因浏览器而异,例如:在IE浏览器中,error对象的属性包括 name、 number、description、message;而在Firefox浏览器中,error对象的属性包括message、fileName、 lineNumber、stack、name。在实际的应用中如果要实现自己的异常,这些属性只要被赋值,都是可用的,其中Firefox浏览器还会自动对stack属性赋值,用于显示异常出现的位置。
JavaScript 内置的7个异常
Error
SyntaxError
TypeError
RangeError
EvalError
ReferenceError
URIError
部分来自baidu javascript用法:break,continue和return语句
2009-02-05 22:17
break,continue和return这三个语句的用法新手们经常弄混淆,至少在我学习C语言的时候经常把它们的用法给搞错。不过现在好了,我已彻底搞清楚它们之间的用法!!由于最近一直在看javascript,下面简要说一下它们三个在javascript的一些用法
break语句:
break语句会使运行的程序立刻退出包含在最内层的循环或者退出一个switch语句。由于它是用来退出循环或者switch语句,所以只有当它出现在这些语句时,这种形式的break语句才是合法的。
如果一个循环的终止条件非常复杂,那么使用break语句来实现某些条件比用一个循环表达式来表达所有的条件容易得多。
for(var i=1;i
continue语句:
continue语句和break语句相似。所不同的是,它不是退出一个循环,而是开始循环的一次新迭代。
continue语句只能用在while语句、do/while语句、for语句、或者for/in语句的循环体内,在其它地方使用都会引起错误!
for(var i=1;i
return语句:
return语句就是用于指定函数返回的值。return语句只能出现在函数体内,出现在代码中的其他任何地方都会造成语法错误!
当执行return语句时,即使函数主体中还有其他语句,函数执行也会停止!
发表评论
-
windows mobile activex and atl create (from csdn)
2012-01-20 09:25 604windows mobile activex and atl ... -
以远程桌面访问Windows Azure虚拟机(转+译)
2012-01-20 09:25 836以远程桌面访问Windows Az ... -
myeclipse 配置android SDK 出现 could not find adb.exe 和 tools 找不到的问题
2012-01-20 09:25 795myeclipse 配置android SDK 出现 coul ... -
更新:来自MIX11的Windows Azure新闻
2012-01-20 09:25 600更新:来自MIX11的Windows Az ... -
Android环境配置与HelloWorld程序(Windows)
2012-01-20 09:25 641Android环境配置与HelloWorl ... -
那些年,那些人,那些事
2012-01-19 14:26 500那些年,那些人,那些事 2012年01月14日 ... -
jjk
2012-01-19 14:26 582jjk 2011年12月25日 ... -
端午节的历史与风俗详考
2012-01-19 14:26 596端午节的历史与风俗详考 2010年06月13日 [摘要] ... -
明史 卷四十七??志第二十三
2012-01-19 14:26 530明史 卷四十七??志第二十三 2011年04月29日 礼 ... -
2011-7-3
2012-01-19 14:26 5432011-7-3 2011年07月03日 电大《汉语基础 ... -
ApplicationDomain学习
2012-01-17 04:15 610ApplicationDomain学习 2011年03月11 ... -
ActionScript3: Dynamic Class
2012-01-17 04:14 608ActionScript3: Dynamic Class 2 ... -
ReferenceError: Error #1069
2012-01-17 04:14 626ReferenceError: Error #1069 20 ... -
2011年9月9日
2012-01-17 04:14 4662011年9月9日 2011年01月15日 重要提醒:系 ... -
赞美女人的词语
2012-01-16 03:04 684赞美女人的词语 2011年02月24日 形容美貌: ... -
赞美客户词汇大全
2012-01-16 03:04 824赞美客户词汇大全 2009 ... -
赞美客户词汇大全
2012-01-16 03:04 808赞美客户词汇大全 2011 ... -
词语的感情色彩
2012-01-16 03:03 1370词语的感情色彩 2009年1 ... -
形容女人漂亮的词语、成语或诗句
2012-01-16 03:03 1291形容女人漂亮的词语、成语或诗句 2010年11月29日 ...
相关推荐
java throw抛出异常实例二 java throw抛出异常实例二
21.javathrow抛出异常对象.zip21.javathrow抛出异常对象.zip21.javathrow抛出异常对象.zip21.javathrow抛出异常对象.zip21.javathrow抛出异常对象.zip21.javathrow抛出异常对象.zip21.javathrow抛出异常对象.zip21....
异常(Exception)一般分为两大类SystemException、ApplicationException,前者是预定义的异常类,后者是用户自定义异常类时需要继承的类 简单自定义异常类Demo using System; using ...
Java异常处理--throw手动抛出异常对象
java throw抛出异常实例一 java throw抛出异常实例一
与Java语言相同,JavaScript可以通过throw语句来抛出异常。与Java语言不同的是,JavaScript中可以通过throw语句抛出所有类型的值,而不仅止于抛出错误对象。 代码如下: //Throw an Error object. try{ throw new...
主要介绍了C++中异常处理的基本思想及throw类抛出异常的使用,也深入谈到了异常被抛出后的栈解旋unwinding过程,需要的朋友可以参考下
主要介绍了Java编程中使用throw关键字抛出异常的用法,是Java入门学习中的基础知识,需要的朋友可以参考下
(3)对抛出的异常使用try-catch进行异常处理。 实践二:使用try-catch-finally进行异常处理 需求说明 (1)对实践1的异常使用try-catch-finally进行异常处理 (2)在finally块输出是否抛出了异常 实现思路及关键...
JavaScript 抛出(throw)错误 当错误发生时,当事情出问题时,JavaScript 引擎通常会停止,并生成一个错误消息。 描述这种情况的技术术语是:JavaScript 将抛出一个错误。 JavaScript try 和 catch try 语句允许...
前言 在android开发过程中,我们经常遇到异常的问题,崩溃抛出异常的时候,是非常令人烦闷的。但是异常有一个好处,使得app能在编译的时候给我们提供一些... throw:抛出异常,一般是一个具体的异常。放置在方法体内
第5章 异常处理;回顾;本章内容;5.1 异常概述;5.1 异常概述;5.1 异常概述;5.1.1 程序中的异常;5.1.2 异常分类;5.1.2 异常分类;5.1.2 异常分类;...5.3.2 使用throw抛出异常;5.3.2 使用throw抛出异常;5.3.
如果传入的数字为负数,我们使用 throw 语句抛出一个 std::runtime_error 类型的异常,表示遇到了负数。如果传入的数字为零,我们抛出一个 MyException 类型的异常,这是我们自定义的异常类。如果传入的数字为正数,...
C++ 异常抛出实例: 用代码详细阐述异常抛出的具体过程。
Java 自定义异常和抛出异常的练习demo
throw异常:C#语言throw异常处理语句, throw语句用于发出在执行期间出现反常情况(异常)信号throw语句通常和try-catch或try-finally语句起使用可以使用throw语句显式引发异常(这里引发自定义异常)创建用户自定义异常...
•如果需要在程序中自行抛出异常,应使用throw语句,throw语句可以单独使用,throw语句抛出 的不是异常类,而是一个异常实例,而且每次只能抛出一个异常实例。throw语句的语法格式如下: –throw Exception...
Java中的异常可以是函数中的语句执行时引发的,也可以是程序员通过throw 语句手动抛出的,只要在Java程序中产生了异常,就会用一个对应类型的异常对象来封装异常,JRE就会试图寻找异常处理程序来处理异常。