JavaScript中的異常處理

來源:互聯網
上載者:User

JavaScript中的異常可以用try..catch..finally語句來處理,也可以手動的來拋出異常。

1.使用try..catch..finally語句來處理異常

js代碼在執行過程中如果出現異常,會手動建立一個異常類對象,該異常類對象將被提交給瀏覽器,這個過程稱為“拋出異常”。當瀏覽器接收到一場對象時,會尋找能處理這一異常的代碼並把當前異常對象提交給其處理,這一過程被稱為“捕獲異常”。try..catch..finally語句的基本文法格式為:

try{//可能拋出異常的代碼

}catch(error){//如果發生異常會執行的代碼,error為發生的異常類對象

}finally{//無條件執行的代碼

}

在上面的語句中,catch語句緊跟在try語句的後面,finally語句緊跟在catch的後面,這是一個完整的異常處理語句的寫法。其實,catch語句和finally語句都可以省略的,但是二者至少要保留其中之一和try語句結合使用。

在try塊中的語句並不一定是要拋出異常的語句,任何JavaScript語句都可以使用異常處理語句來處理,但這樣做沒有必要。當try塊中某一行的代碼拋出了異常,則該行下方的代碼將不會被執行,轉而直接執行catch塊的代碼。

在catch塊中,catch語句後面括弧中的error表示捕獲到的異常對象執行個體,該執行個體包含異常的詳細資料,可以根據這些資訊作出適當的處理。如果catch語句後還有finally語句,則繼續執行finally塊中的語句。

finally塊中的語句是始終被執行的語句,塊中的語句通常做一些最後的清理工作。如果在執行finally塊之前,遇到return語句、continue語句或break語句等轉移流程的語句時,那麼在執行這些語句前finally塊中的代碼也要被執行。

如果在一個異常處理語句中,只包含try..finally語句而沒有補貨異常的catch語句則執行try塊中的語句後會直接執行finally塊的語句,最後再將異常拋出。

例:

<script>
try{
var date=new Date();
date.test();//調用date的未定義的test方法;
document.wrire("try塊執行結束<br>");
}catch(error){
with(document){
   write("出現了異常<br>");
   write("異常類型:"+error.name+"<br>");
   write("異常訊息:"+error.message);
}
}finally{
document.write("異常處理完畢!");
}
</script>

結果:

出現了異常
異常類型:TypeError
異常訊息:對象不支援此屬性或方法異常處理完畢!

2.手動拋出異常

除了發生運行時瀏覽器會拋出異常,開發人員也可以自己動手拋出異常。手動異常拋出的語句是throw,其基本文法格式為:

throw expression;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.