官术网_书友最值得收藏!

3.4 異常處理語句

視頻講解

早期的JavaScript總會出現一些令人困惑的錯誤信息,為了避免類似這樣的問題,在JavaScript 3.0中添加了異常處理機制,可以采用從Java語言中移植過來的模型,使用try...catch...finally、throw等語句處理代碼中的異常。下面介紹JavaScript中的幾個異常處理語句。

3.4.1 try...catch...finally語句

JavaScript從Java語言中引入了try...catch...finally語句。

語法如下:

    try{
       somestatements;
    }catch(exception){
       somestatements;
    }finally{
       somestatements;
    }

參數說明。

 try:嘗試執行代碼的關鍵字。

 catch:捕捉異常的關鍵字。

 finally:最終一定會被處理的區塊的關鍵字,該關鍵字和后面大括號中的語句可以省略。

說明

JavaScript語言與Java語言不同,try...catch語句只能有一個catch語句。這是由于在JavaScript語言中無法指定出現異常的類型。

例如,當在程序中輸入了不正確的方法名charat時,將彈出在catch區域中設置的異常提示信息,并且最終彈出finally區域中的信息提示。程序代碼如下:

    01  var str = "I like JavaScript";                //定義字符串變量
    02  try{
    03      document.write(str.charat(5));           //應用錯誤的方法名charat
    04  }catch(exception){
    05      alert("運行時有異常發生");               //彈出異常提示信息
    06  }finally{
    07      alert("結束try...catch...finally語句");  //彈出提示信息
    08  }

由于在使用charAt()方法時將方法的大小寫輸入錯誤,所以在try區域中獲取字符串中指定位置的字符將發生異常,這時將執行catch區域中的語句,彈出相應異常提示信息的對話框。運行結果如圖3.19和圖3.20所示。

圖3.19 彈出異常提示對話框

圖3.20 彈出結束語句對話框

3.4.2 Error對象

try...catch...finally語句中catch通常捕捉到的對象為Error對象,當運行JavaScript代碼時,如果產生了錯誤或異常,JavaScript就會生成一個Error對象的實例來描述錯誤,該實例中包含了一些特定的錯誤信息。

Error對象有以下兩個屬性。

 name:表示異常類型的字符串。

 message:實際的異常信息。

例如,將異常提示信息放置在彈出的提示對話框中,其中包括異常的具體信息以及異常類型的字符串。程序代碼如下:

    01  var str = "I like JavaScript";                      //定義字符串變量
    02  try{
    03      document.write(str.charat(5));                   //應用錯誤的方法名charat
    04  }catch(exception){
    05      //彈出實際異常信息以及異常類型的字符串
    06      alert("實際的錯誤消息為:"+exception.message+"\n錯誤類型字符串為:"+exception.name);
    07  }

運行結果如圖3.21所示。

圖3.21 異常信息提示對話框

3.4.3 使用throw語句拋出異常

有些JavaScript代碼并沒有語法上的錯誤,但存在邏輯錯誤。對于這種錯誤,JavaScript是不會拋出異常的。這時,就需要創建一個Error對象的實例,并使用throw語句來拋出異常。在程序中使用throw語句可以有目的地拋出異常。

語法如下:

    throw new Error("somestatements");

參數說明。

throw:拋出異常關鍵字。

例如,定義一個變量,值為1與0的商,此變量的結果為無窮大,即Infinity,如果希望自行檢驗除數為零的異常,可以使用throw語句拋出異常。程序代碼如下:

    01  try{
    02     var num=1/0;                          //定義變量并賦值
    03     if(num=="Infinity"){                  //如果變量num的值為Infinity
    04        throw new Error("除數不可以為0");  //使用throw語句拋出異常
    05     }
    06  }catch(exception){
    07     alert(exception.message);             //彈出實際異常信息
    08  }

從程序中可以看出,當變量num為無窮大時,使用throw語句拋出異常。運行結果如圖3.22所示。

圖3.22 使用throw語句拋出的異常

主站蜘蛛池模板: 手游| 漳浦县| 乐至县| 宁南县| 奉贤区| 郓城县| 托克逊县| 武山县| 盱眙县| 苍梧县| 黎平县| 宁河县| 土默特右旗| 广水市| 沅江市| 东兴市| 绥江县| 昆明市| 光山县| 华安县| 天气| 玛多县| 盐山县| 卓尼县| 金坛市| 边坝县| 浦江县| 江孜县| 柳河县| 浪卡子县| 南安市| 屏东县| 河源市| 额济纳旗| 易门县| 手游| 怀化市| 大田县| 蓬溪县| 宣武区| 如东县|