js中try、catch、finally的執行規則


首先一個常識就是,在瀏覽器執行JS腳本過程中,當出現腳本錯誤,並且你沒有手動進行異常捕捉時,他會在瀏覽器下面出現黃色的嘆號,這是正常的,這也不是最重要的,最重要的是,出錯行以下的所有JS代碼將中停執行,這是我們不希望看到的,所以說,對於自己寫的,拿不准的腳本還是加上異常捕捉比較好。

 

 

try:  語句測試代碼塊的錯誤,一般把可能會出錯的代碼放到這里

 

catch: 只有try里面的代碼塊發生錯誤時,才會執行這里的代碼,參數err記錄着try里面代碼的錯誤信息

 

finally: 無論有無異常里面代碼都會執行

使用場景為容易出錯的,容易產生兼容問題的代碼段加上try..catch合處理那些我們無法控制的錯誤,如I/O操作,后端java讀取I/O操作比較多比如讀數據庫,所以用try catch比較多。前端可以用在上傳圖片或async await同步調接口。

ECMA-262第3版引入了try catch語句,作為JavaScript中處理異常的一種標准方式。但是在前端js代碼中很少看到try catch語句,並不是所以代碼都需要加try catch來作得不償失的“保險”。

 

try catch缺點

  1.try catch耗性能

  2.try catch捕獲不到異步錯誤

  3.try catch可能會導致報錯點更模糊

 

順序:

 

try里面的代碼報錯的時候,catch里面的代碼才會執行,finally里面的代碼永遠會執行

 

catch和finally里面,正常的代碼會從上到下順序執行

 

如果只是catch里面代碼出錯,則報catch里面的錯誤

 

如果catch和finally都出錯則會報finally里面的錯誤

例子1

<script>
    var a = "hello"; 
        try{
            alert(a);        //如果是不存在的變量,則拋出異常,將直接跳到catch里面執行(throw定義異常也不會被拋出)
       throw "不存在";        //定義拋出異常
            alert("I am try");      //只要上面的語句出現錯誤或者throw語句這句將不會被執行
        }catch(err){
      //如果try中發現錯誤,則執行catch中的語句,如果沒有錯誤,則跳過catch
alert(err)
//接收設置的throw錯誤異常,如果沒有則拋出根據情況默認錯誤 alert("錯誤彈出"); //被執行 }finally{ alert("無論如何都會執行"); } // var b="world"; // if(b){ // document.write(b); // }else{ // alert("error"); // } </script>

 

err具有下面一些主要屬性: 

  • description: 錯誤描述 (僅IE可用).
  • fileName: 出錯的文件名 (僅Mozilla可用).
  • lineNumber: 出錯的行數 (僅Mozilla可用).
  • message: 錯誤信息 (在IE下同description)
  • name: 錯誤類型.
  • number: 錯誤代碼 (僅IE可用).
  • stack: 像Java中的Stack Trace一樣的錯誤堆棧信息 (僅Mozilla可用).



 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM