JavaScript(3):基础部分之异常处理

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类的一个实例

 

实例:

View Code
 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子句编写)

例子:

View Code
 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:

弹跳出:

    

原文地址:https://www.cnblogs.com/KeenLeung/p/2669777.html