- JavaScript從入門到精通(微視頻精編版)
- 明日科技
- 1051字
- 2020-09-01 15:02:23
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語句拋出的異常
- 手機(jī)安全和可信應(yīng)用開發(fā)指南:TrustZone與OP-TEE技術(shù)詳解
- Learn Blockchain Programming with JavaScript
- VMware View Security Essentials
- Docker and Kubernetes for Java Developers
- 復(fù)雜軟件設(shè)計(jì)之道:領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)全面解析與實(shí)戰(zhàn)
- Learning Chef
- Android 9 Development Cookbook(Third Edition)
- 算法大爆炸:面試通關(guān)步步為營
- Building Cross-Platform Desktop Applications with Electron
- 假如C語言是我發(fā)明的:講給孩子聽的大師編程課
- Java Web開發(fā)技術(shù)教程
- 青少年P(guān)ython編程入門
- Oracle從入門到精通(第5版)
- Symfony2 Essentials
- MySQL入門很輕松(微課超值版)