[Js] 關於try 跟 catch
MDN網站內稱為例外處理,使用方式如下:
try {
要做的事情
} catch(e) {
例外處理
}
會把try裡面的程式碼執行一次,遇到問題會跳轉到catch裡面,如果catch也有問題就會直接跳錯誤通知。
上面說到如果程式碼遇到問題會終止執行,而這個問題大部分都是我們在瀏覽器上看到的編譯錯誤,最常看到的錯誤有:
- js 的語法錯誤(SyntaxError),像是
Unexpected token.
。 - 變數名稱拼錯(ReferenceError),像是
xxx is undefined.
。 - 找不到 function(TypeError),像是
xxx is not a function
。
瀏覽器會將這些編譯成 Error 物件, 這個物件會被自動拋出(就算不加 throw 也會被拋出),終止編譯,然後我們就會看到網頁一片空白,開發者工具出現錯誤提示。 所以就算在 try catch 中不用 throw 丟出 Error 物件, catch 也能捕捉到。
再來看看throw
MDN內對throw的說明如下:
throw
語句將引發使用者定義的異常。當前函數的執行將停止(之後的語句將不執行),並且控制權將傳遞給調用堆疊中的第一個 catch
塊。如果調用方函數之間不存在塊,則程式將終止。
throw可丟出使用者定義的異常,然後停止執行函數(這點跟return下面來比較看看吧)
return 也可以停止函數執行並回傳值,差別在於return
- 只能在function中使用 throw可以在任何地方使用
- return 可以直接使用(會回傳undefined) throw不行
Finally:
可接在try catch後面,也可以不接,如果try catch裡面有return語法,會中斷然後在finally程式碼的最後面執行。
留言
張貼留言