26.异常处理 :使用try/catch/finally
try{
//要执行的代码
}
catch(e){
//处理异常的代码
}
[finally{
//无论异常发生与否,都会执行的代码
}
]
注意:
e :为异常参数,是一个error对象
error有两个常用的属性:name 【为错误类型】和 message【为错误的详细信息】,可使用e.name 和 e.message来输出信息
共有6中错误类型:(摘自:http://web302.com/2010/08/javascript-error-object-in/)
1.EvalError //当不正确使用eval函数时,会抛出EvalError类的一个实例
2.RangeError //当数值超出JavaScript中合法的数值范围时,会抛出RangeError类的一个实例
3.ReferenceError //当读取一个不存在的变量的值时,会抛出ReferenceError类的一个实例
4.SyntaxError //当JavaScript中出现语法错误时,会抛出SyntaxError类的一个实例
5.TypeError //当JavaScript中类型不符合要求时,会抛出TypeError类的一个实例
6.URIError //当字符串不符合编码或解码要求时,会抛出URIError类的一个实例
实例:
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title>javaScript异常处理</title> 6 <script language="javascript"> 7 { 8 var array = null ; 9 try{ 10 document.write(array[0]); 11 } 12 catch(e){ 13 alert("Error name : "+e.name); 14 alert("Error message : "+e.message); 15 } 16 finally{ 17 alert("对象为null"); 18 } 19 } 20 </script> 21 </head> 22 23 <body> 24 </body> 25 </html>
result:
分别弹出:
27.使用throw抛出异常
throw value
一般: throw new Error(message)
此时javascript解释器会立刻停止正常的程序执行,跳转到最近的异常处理器(是用try/catch/finally语句中的catch子句编写)
例子:
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title>使用throw抛出异常</title> 6 <script language="javascript"> 7 { 8 function sum(a,b) 9 { 10 if(isNaN(a)||isNaN(b)) 11 throw new Error("参数不是数字"); 12 else 13 { 14 a = parseInt(a); 15 b = parseInt(b); 16 return (a+b); 17 } 18 } 19 try{ 20 sum("a","b"); 21 } 22 catch(e){ 23 alert(e.message); 24 } 25 } 26 </script> 27 </head> 28 29 <body> 30 </body> 31 </html>
result:
弹跳出: