萬盛學電腦網

 萬盛學電腦網 >> 腳本專題 >> javascript >> 淺談JavaScript異常處理語句

淺談JavaScript異常處理語句

  考慮到 JS 中的錯誤可比服務器端的代碼產生的錯誤要多得多,並且還難以發現及修正,所以 JS 代碼必須有異常處理以及全局一場處理。

  程序運行過程中難免會出錯,出錯後的運行結果往往是不正確的,因此運行時出錯的程序通常被強制中止。運行時的錯誤統稱為異常,為了能在錯誤發生時得到一個處理的機會,JavaScript提供了異常處理語句。包含try-catch、try-catch-finally和throw.

  try-catch語句

  ?

1 2 3 4 5 6 try{ tryStatements } catch(exception){ catchStatements }

  參數說明:

  tryStatements:必選項。可能發生錯誤的語句序列。

  exception:必選項。任何變量名,用於引用錯誤發生時的錯誤對象。

  catchStatements:可選項。錯誤處理語句,用於處理tryStatements中發生的錯誤。

  編碼時通常將可能發生錯誤的語句寫入try塊的花括號中,並在其後的catch塊中處理錯誤。錯誤信息包含在一個錯誤對象(Error對象)裡,通過exception的引用可以訪問該對象。根據錯誤對象中的錯誤信息以確定如果處理。

  ?

1 2 3 4 5 6 7 8 <script type="text/javascript"> try{ var n = error; //人為引發一個錯誤,error未定義就使用 } catch(e){ alert((e.number&0xFFFF) + "號錯誤:" + e.description); //錯誤處理:僅輸出錯誤信息 } </script>

  該代碼段使用了一個try-catch結構處理程序運行時錯誤,第4行人為引發一個錯誤。第6~9行的catch塊捕捉錯誤並處理。

  提示:JavaScript的錯誤為運行時錯誤和語法錯誤,語法錯誤在編譯階段發現;而運行時錯誤在運行過程中發現,錯誤處理語句僅能處理運行時錯誤。

  try-catch-finally語句

  ?

1 2 3 4 5 6 7 8 9 try{ tryStatements; } catch( exception ){ handleStatements; } finally{ fianllyStatements; }

  參數說明:

  tryStatements:必選項,可能引發異常的語句。

  handleStatements:可選項,異常處理語句。

  fianllyStatements:可選項,在其他過程執行結束後無條件執行的語句。

  盡管沒有錯誤發生finally塊中的語句也會在最後得到執行,通常在此放置資源清理的程序代碼。

  遍歷一個有蘋果名稱的數組時人為引發一個異常。

  ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <script type="text/javascript"> try{ var fruit = new Array("鴨梨","蘋果","葡萄","李子");   for( n=0;n<fruit.length;m++) { document.write(fruit[n] + ""); } } catch( e ) { alert( (e.number&0xFFFF) + "號錯誤:" + e.description ); } finally{ fruit = null; alert("fruit="+fruit+"已經斷開fruit數組的引用!"); } </script>

  該代碼段第5行使用一個未定義的變量m,人為引發一個異常。第11~13行捕捉異常並處理。第14~18行的finally塊清理資源,該語句無條件被執行,可以保證fruit數組所占資源不被洩露。

  throw語句

  多個異常處理語句可以嵌套使用。當多個結構嵌套時,處於裡層try-catch語句不打算自己處理異常則可以將其拋出。父級try-catch語句可以接收到子級拋出的異常,拋出操作使用throw語句。

  throw 表達式;

  表達式的值是作為錯誤信息對象傳出,該對象將被catch語句捕獲。throw語句可以使用在打算拋出異常的任意地方。

  通常情況下0不能作為除數,因此可以為除數為0定義一個異常並拋出。

  ?

1 2 3 4 5 6 7 8 9 10 11 12 13 <script> try{ var dividend = 100; //被除數 var parts = 0; //除數 if( parts == 0){ //如果除數為0則拋出異常 throw "Error:parts is zero"; //拋出異常 } alert("每人" + dividend/parts + "份"); //輸出提示信息 } catch(e){ //此處將捕獲try塊中拋出的異常 alert(e); //用對話框輸出錯誤對象的信息 } </script>

 

  以上所述就是本文的全部內容了,希望大家能夠喜歡。

copyright © 萬盛學電腦網 all rights reserved