JavaScript系列—說說try/catch和throw

1.官方解釋

首先我們來看看官方的解釋

定義和用法

try/catch/finally 語句用於處理代碼中可能出現的錯誤信息。

錯誤可能是語法錯誤,通常是程序員造成的編碼錯誤或錯別字。也 可能是拼寫錯誤或語言中缺少的功能(可能由於瀏覽器差異)。

try語句允許我們定義在執行時進行錯誤測試的代碼塊。

catch 語句允許我們定義當 try 代碼塊發生錯誤時,所執行的代碼塊。

finally 語句在 try 和 catch 之後無論有無異常都會執行。

注意: catch 和 finally 語句都是可選的,但你在使用 try 語句時必須至少使用一個。

提示: 當錯誤發生時, JavaScript 會停止執行,並生成一個錯誤信息。使用 throw 語句 來創建自定義消息(拋出異常)。如果你將 throw 和 try 、 catch一起使用,就可以控制程序輸出的錯誤信息。

語法

try {
    tryCode - 嘗試執行代碼塊
}
catch(err) {
    catchCode - 捕獲錯誤的代碼塊

finally {
    finallyCode - 無論 try / catch 結果如何都會執行的代碼塊
}

參數值

參數 描述
tryCode 必須。檢查是否有錯誤的代碼塊。
err 必須(如果使用 catch)。指定局部變量應用的錯誤。該變量可以引用 Error 對象 (包含發生的錯誤信息,如 "'addlert' 沒有定義")。如果異常通過 throw 語句創建 , 該 變量引用了爲在throw語句中指定的對象 (查看 "更多實例")
catchCode 可選。如果 try 語句發生錯誤執行的代碼塊。如果 try 語句沒發生錯誤該代碼不會執行。
finallyCode 可選。無論 try / catch 的結果如何都會執行。

2.個人總結

其實很多人可能看了官網文檔還是沒有解決自己的疑惑。

1)js程序在遇到錯誤的時候是不會繼續執行的

首先明確一點,js程序在遇到錯誤的時候是不會繼續執行的,看以下代碼就知道了

https://www.w3school.com.cn/tiy/t.asp?f=jseg_try_catch

執行以上代碼,點擊‘’查看消息‘’ ,控制檯報錯,沒有彈出‘走到這裏’

2)try/catch可以讓js代碼遇到錯誤了也可以執行下去

執行以上代碼,三個alert都會依次彈出,可見try/catch可以幫助程序有了錯誤依然可以往下執行,並且可以給出錯誤信息

3)try/catch也可以中斷程序,使用throw new Erroe

看上面代碼,會發現控制檯報錯,不彈出任何一個alert

因爲throw會終止代碼的運行。既然這裏提到了throw,那就複習一下

3.throw

throw語句用來拋出一個用戶自定義的異常。當前函數的執行將被停止(throw之後的語句將不會執行),並且控制將被傳遞到調用堆棧中的第一個catch塊。如果調用者函數中沒有catch塊,程序將會終止。

看一個例子

上面的代碼,控制檯會打印"Parameter is not a number!",並且彈出1

如果把 throw 與 try 和 catch 一起使用,那麼能夠控制程序流,並生成自定義的錯誤消息。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章