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

3.4 異常處理語句

視頻講解

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

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

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

語法如下:

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

參數(shù)說明。

 try:嘗試執(zhí)行代碼的關(guān)鍵字。

 catch:捕捉異常的關(guān)鍵字。

 finally:最終一定會(huì)被處理的區(qū)塊的關(guān)鍵字,該關(guān)鍵字和后面大括號(hào)中的語句可以省略。

說明

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

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

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

由于在使用charAt()方法時(shí)將方法的大小寫輸入錯(cuò)誤,所以在try區(qū)域中獲取字符串中指定位置的字符將發(fā)生異常,這時(shí)將執(zhí)行catch區(qū)域中的語句,彈出相應(yīng)異常提示信息的對(duì)話框。運(yùn)行結(jié)果如圖3.19和圖3.20所示。

圖3.19 彈出異常提示對(duì)話框

圖3.20 彈出結(jié)束語句對(duì)話框

3.4.2 Error對(duì)象

try...catch...finally語句中catch通常捕捉到的對(duì)象為Error對(duì)象,當(dāng)運(yùn)行JavaScript代碼時(shí),如果產(chǎn)生了錯(cuò)誤或異常,JavaScript就會(huì)生成一個(gè)Error對(duì)象的實(shí)例來描述錯(cuò)誤,該實(shí)例中包含了一些特定的錯(cuò)誤信息。

Error對(duì)象有以下兩個(gè)屬性。

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

 message:實(shí)際的異常信息。

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

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

運(yùn)行結(jié)果如圖3.21所示。

圖3.21 異常信息提示對(duì)話框

3.4.3 使用throw語句拋出異常

有些JavaScript代碼并沒有語法上的錯(cuò)誤,但存在邏輯錯(cuò)誤。對(duì)于這種錯(cuò)誤,JavaScript是不會(huì)拋出異常的。這時(shí),就需要?jiǎng)?chuàng)建一個(gè)Error對(duì)象的實(shí)例,并使用throw語句來拋出異常。在程序中使用throw語句可以有目的地拋出異常。

語法如下:

    throw new Error("somestatements");

參數(shù)說明。

throw:拋出異常關(guān)鍵字。

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

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

從程序中可以看出,當(dāng)變量num為無窮大時(shí),使用throw語句拋出異常。運(yùn)行結(jié)果如圖3.22所示。

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

主站蜘蛛池模板: 康定县| 蓬溪县| 姚安县| 阿拉善盟| 无棣县| 八宿县| 普宁市| 瑞昌市| 富平县| 昌宁县| 左云县| 义乌市| 丰原市| 洛川县| 左权县| 大兴区| 凤冈县| 东明县| 伊吾县| 九龙城区| 巫溪县| 义乌市| 商丘市| 溆浦县| 长春市| 云龙县| 阳高县| 永修县| 资兴市| 桐城市| 嘉义市| 辽源市| 姚安县| 珲春市| 顺昌县| 汉源县| 米脂县| 富裕县| 嘉黎县| 万盛区| 钦州市|