淺談JavaScript異常處理語句
程序運行過程中難免會出錯,出錯后的運行結(jié)果往往是不正確的,因此運行時出錯的程序通常被強(qiáng)制中止。運行時的錯誤統(tǒng)稱為異常,為了能在錯誤發(fā)生時得到一個處理的機(jī)會,JavaScript提供了異常處理語句。包含try-catch、try-catch-finally和throw.
try-catch語句
try{ tryStatements } catch(exception){ catchStatements }
參數(shù)說明:
tryStatements:必選項??赡馨l(fā)生錯誤的語句序列。
exception:必選項。任何變量名,用于引用錯誤發(fā)生時的錯誤對象。
catchStatements:可選項。錯誤處理語句,用于處理tryStatements中發(fā)生的錯誤。
編碼時通常將可能發(fā)生錯誤的語句寫入try塊的花括號中,并在其后的catch塊中處理錯誤。錯誤信息包含在一個錯誤對象(Error對象)里,通過exception的引用可以訪問該對象。根據(jù)錯誤對象中的錯誤信息以確定如果處理。
<script type="text/javascript"> try{ var n = error; //人為引發(fā)一個錯誤,error未定義就使用 } catch(e){ alert((e.number&0xFFFF) + "號錯誤:" + e.description); //錯誤處理:僅輸出錯誤信息 } </script>
該代碼段使用了一個try-catch結(jié)構(gòu)處理程序運行時錯誤,第4行人為引發(fā)一個錯誤。第6~9行的catch塊捕捉錯誤并處理。
提示:JavaScript的錯誤為運行時錯誤和語法錯誤,語法錯誤在編譯階段發(fā)現(xiàn);而運行時錯誤在運行過程中發(fā)現(xiàn),錯誤處理語句僅能處理運行時錯誤。
try-catch-finally語句
try{ tryStatements; } catch( exception ){ handleStatements; } finally{ fianllyStatements; }
參數(shù)說明:
tryStatements:必選項,可能引發(fā)異常的語句。
handleStatements:可選項,異常處理語句。
fianllyStatements:可選項,在其他過程執(zhí)行結(jié)束后無條件執(zhí)行的語句。
盡管沒有錯誤發(fā)生finally塊中的語句也會在最后得到執(zhí)行,通常在此放置資源清理的程序代碼。
遍歷一個有蘋果名稱的數(shù)組時人為引發(fā)一個異常。
<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+"已經(jīng)斷開fruit數(shù)組的引用!"); } </script>
該代碼段第5行使用一個未定義的變量m,人為引發(fā)一個異常。第11~13行捕捉異常并處理。第14~18行的finally塊清理資源,該語句無條件被執(zhí)行,可以保證fruit數(shù)組所占資源不被泄露。
throw語句
多個異常處理語句可以嵌套使用。當(dāng)多個結(jié)構(gòu)嵌套時,處于里層try-catch語句不打算自己處理異常則可以將其拋出。父級try-catch語句可以接收到子級拋出的異常,拋出操作使用throw語句。
throw 表達(dá)式;
表達(dá)式的值是作為錯誤信息對象傳出,該對象將被catch語句捕獲。throw語句可以使用在打算拋出異常的任意地方。
通常情況下0不能作為除數(shù),因此可以為除數(shù)為0定義一個異常并拋出。
<script> try{ var dividend = 100; //被除數(shù) var parts = 0; //除數(shù) if( parts == 0){ //如果除數(shù)為0則拋出異常 throw "Error:parts is zero"; //拋出異常 } alert("每人" + dividend/parts + "份"); //輸出提示信息 } catch(e){ //此處將捕獲try塊中拋出的異常 alert(e); //用對話框輸出錯誤對象的信息 } </script>
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。
相關(guān)文章
Area 區(qū)域?qū)崿F(xiàn)post提交數(shù)據(jù)的js寫法
這篇文章主要介紹了在Area區(qū)域的里 實現(xiàn)post 提交數(shù)據(jù) 的js寫法,需要的朋友可以參考下2014-04-04基于JS實現(xiàn)頁面視頻video標(biāo)簽禁止下載(下載按鈕+右擊菜單)
最近做項目遇到這樣的需求,禁止用戶瀏覽頁面的時候下載頁面的視頻,網(wǎng)上看到下載視頻的方法有兩種,本文對每種方法做詳細(xì)分析,對js禁止下載視頻相關(guān)知識感興趣的朋友一起看看吧2024-02-02微信小程序picker組件兩列關(guān)聯(lián)使用方式
這篇文章主要介紹了微信小程序picker組件兩列關(guān)聯(lián)使用方式,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10