- JavaScript從入門到精通(微視頻精編版)
- 明日科技
- 1051字
- 2020-09-01 15:02:23
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語句拋出的異常
- 零基礎學Visual C++第3版
- LaTeX Cookbook
- 神經網絡編程實戰:Java語言實現(原書第2版)
- Java深入解析:透析Java本質的36個話題
- MATLAB實用教程
- 匯編語言程序設計(第3版)
- Mastering ServiceNow(Second Edition)
- Clojure Reactive Programming
- Go語言精進之路:從新手到高手的編程思想、方法和技巧(1)
- 微信小程序全棧開發技術與實戰(微課版)
- QGIS Python Programming Cookbook(Second Edition)
- 深度學習原理與PyTorch實戰(第2版)
- 區塊鏈架構之美:從比特幣、以太坊、超級賬本看區塊鏈架構設計
- Exploring SE for Android
- Instant Automapper