日期:2014-05-16 浏览次数:20355 次
在代码的运行过程中一般会发生两种错误:一是程序内部的逻辑或者语法错误;二是运行环境或
者用户输入中不可预知的数据造成的错误。JavaScript可以捕获异常并进行相应的处理,从而避免
了浏览器向用户报错。
1、利用try-catch-finally处理异常
用户可以使用该结构处理可能发生异常的代码,如果发生异常,则由catch捕获异常并进行相应
的处理,其语法如下:
try{
//要执行的代码
}catch(e){
//处理异常的代码
}finally{
//无论异常发生与否,都会执行的代码
}
这与java或者C#异常处理的语言室一致的。通过异常处理,可以避免程序停止运行,从而具有
了一定的自我修复能力。在Ajax开发中,利用异常处理的一个典型应用就是创建XMLHttpRequest
对象,不同浏览器创建它的方式也是不一样的,为了使代码能够跨浏览器运行,就可以利用异常。一种
方法不行,再可以用另一种方法,知道不发生异常为止,例如:
<script type="text/javascript">
var xmlhttp;
try{
//尝试用IE的方式创建XMLHttpRequest对象
xmlhttp=new ActionXObject("Microsoft.XMLHTTP");
}catch(e){
try{
//尝试用非IE的方式创建XMLHttpRequest对象
xmlhttp=new XMLHttpRequest();
}catch(e){
}
}
</script>
利用这种方式,就可以跨浏览器创建XMLHttpRequest对象。
2、利用throw处理异常
在JavaScript中有其内部的异常机制,在遇到非法操作的时候能自动抛出异常,但在实际的开
发中,随着程序的复杂,需要自己实现异常,可以通过throw语句来实现:“throw value”;
其中vlaue 就是要抛出的异常变量,它可以是JavaScript 中的任何一种类型,但在
JavaScript 内部的异常中, 异常参数e 是一个名为error 的对象, 可以通过new
Error(message)来创建这个对象,异常的描述被作为error对象的一个属性message,可以由
构造函数传入,也可以之后赋值。通过这个异常描述,可以让程序获取异常的详细信息,从而自动处理,
例如,下面的程序用于计算两个数据的积,如果参数不是数字,则抛出异常:
<script type="text/javascript">
//函数默认要求参数是数字
function sum(a,b){
a=parseInt(a);
b=parseInt(b);
//如果a或b不能转换为数字则抛出一个异常对象
if(isNaN(a) || isNaN(b)){
throw new Error("参数不是数字");
}
return a*b;
}
try{
//错误的调用
var s=sum(1,"a");
}catch(e){
//显示异常的详细信息
alert(e.message);
}
</script>
程序中使用字母作为参数传递给sum函数是错误的,所以函数内跑粗了一个异常对象,这个对象
被catch语句获取,并使用alert语句显示了其详细信息,