国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JavaScript中的異常捕捉介紹

2024-05-06 16:13:17
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了JavaScript中的異常捕捉介紹,本文講解了throw語句拋出異常,try/catch/finally語句捕捉異常,需要的朋友可以參考下
 
 

與Java語言相同,JavaScript可以通過throw語句來拋出異常。與Java語言不同的是,JavaScript中可以通過throw語句拋出所有類型的值,而不僅止于拋出錯誤對象。

 

復制代碼代碼如下:

//Throw an Error object.
try{
  throw new Error("Message in Error Object");
}catch(e){
    console.log(e);//Error: Message in Error Object
}

 

try{
  throw "Raw Message";
}catch(message){
  console.log(message);//Raw Message
  console.log(typeof message);//string
}

try{
  throw 42;
}catch(code){
  console.log(code);//42
  console.log(typeof code);//number
}

 


與Java語言一樣,如果異常沒有被任何catch語句所捕捉,那么該異常會最終拋給用戶:

 

復制代碼代碼如下:

try{
  //throw new Error("test error");//Error will be thrown. Error: test error
}finally{
}

 

try{
  throw 42;//Error will be thrown. Error: 42
}finally{
}

 


對于拋出異常的捕捉,JavaScript使用的也是try/catch/finally語句,其使用規則為:try是必需的,catch和finally均為可選語句,但catch和finally中必須至少出現一個。

 

在catch語句中,可以定義一個參數e(或者其它任何合法的變量名),用于存儲拋出的異常值。在catch語句內部,這個參數可以作為局部變量而使用。與JavaScript中其它的變量使用情況不同的是,catch語句中的參數變量僅在catch語句內部有效(該變量的作用域局限在catch語句中)。

 

對于finally語句,無論try中是否有異常拋出,finally中的代碼均會被執行。詳細情況包括:

 

1.try中無異常發生,當try語句執行完畢后,finnally中的代碼將被執行。
2.try中無異常發生,但由于執行了break、continue或return語句而導致退出try代碼時,finally中的代碼將被執行。
3.try中發生異常,異常由catch語句處理完成后,finally中的代碼被執行。
4.try中發生異常,但因沒有catch語句導致該異常需要繼續向上拋出時,finally中的代碼將被執行。值得注意的是,在catch語句缺失的情況下,JavaScript將先執行finally中的代碼,然后才向上繼續拋出異常。

 

在finally代碼中,如果出現break、continue或return語句,那么JavaScript將直接執行這些語句,而置try代碼中可能存在的break、continue或return語句于不顧;即使catch語句缺失導致有異常需要上報,JS也會丟棄這個異常上報信息,繼續執行finally代碼中的break、continue或return語句。類似的,如果finally代碼中也拋出了異常,那么JavaScript將丟棄所有try代碼中的break、continue或return語句,同時也丟棄可能存在的異常上報行為,只拋出finally代碼中的異常。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 黑河市| 湾仔区| 个旧市| 阿城市| 松溪县| 曲周县| 汕尾市| 南和县| 大安市| 大连市| 巢湖市| 武清区| 昆山市| 珠海市| 武山县| 高尔夫| 兴文县| 礼泉县| 郴州市| 衢州市| 荃湾区| 遵义县| 双辽市| 彭泽县| 锡林浩特市| 浏阳市| 榆中县| 长治市| 通城县| 海盐县| 瓮安县| 彭山县| 平果县| 金沙县| 汕尾市| 临江市| 高密市| 临夏市| 南召县| 河南省| 晋宁县|