首頁 > web前端 > js教程 > 主體

淺談JavaScript異常處理語句_javascript技巧

WBOY
發布: 2016-05-16 15:52:26
原創
1459 人瀏覽過

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

try-catch語句

try{
tryStatements
}
catch(exception){
catchStatements
}
登入後複製

參數說明:
tryStatements:必選項。可能發生錯誤的語句序列。
exception:必選項。任何變數名,用於引用錯誤發生時的錯誤物件。
catchStatements:可選項。錯誤處理語句,用於處理tryStatements中發生的錯誤。
編碼時通常會將可能發生錯誤的語句寫入try區塊的花括號中,並在其後的catch區塊中處理錯誤。錯誤訊息包含在一個錯誤物件(Error物件)裡,透過exception的參考可以存取該物件。根據錯誤對像中的錯誤訊息以確定如果處理。

<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語句

try{
tryStatements;
}
catch( exception ){
handleStatements;
}
finally{
fianllyStatements;
}
登入後複製

參數說明:
tryStatements:必選項,可能引發異常的語句。
handleStatements:可選項,異常處理語句。
fianllyStatements:可選項,在其他程序執行結束後無條件執行的語句。
儘管沒有錯誤發生finally區塊中的語句也會在最後執行,通常在此放置資源清理的程式碼。
遍歷一個有蘋果名稱的陣列時人為引發一個異常。

<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定義一個異常並拋出。

<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>
登入後複製

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

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!