透過JavaScript try catch來做例外處理
第一次接觸try catch是在剛學PHP的時候 ,雖然現在都還給老師就是了…我們可以利用try catch來捕捉例外的狀況,也可以因應不同錯誤狀況,拋出不一樣的錯誤訊息。
今天就舉例一下工作上什麼樣的情境會用到try catch,假設有段程式碼是在處理後端回傳的資料 ,但有機率性的這隻API並不會像我們預期的那樣回傳正確的資料格式,以我曾經遇到的狀況是陣列裡面有數十個物件,但有幾個物件少了Key,這樣描述聽起來有些抽象,直接看資料應該會比較清楚。
假設我想要針對每筆資料的address做簡單處理(用換行字符取代逗號),程式碼如下圖
但如果不幸的api回傳的資料剛好是有問題的,你有會看到以下的畫面,因為Amy這筆資料沒有address的key ,所以取其值就會是undefined,並不具有replace這個方法。
這時就可以用try catch 來預防這樣的情況,try區塊放的程式碼是你預期可能會出錯的地方,可以針對不同的狀況,用throw拋出不同的錯誤訊息,如果在執行時發生錯誤就會拋出錯誤給catch 並且印出錯誤訊息,補充一下無論是否在try的部分拋出錯誤, finally都會執行。
try(no error) 》finally
try(error) 》 catch 》finally
假設沒有throw error message,那麼catch中的error就會是瀏覽器預設的錯誤訊息。
在工作實務上,比較常用的使用情境是在預防某些錯誤會中斷整個流程,用了try catch之後捕捉到錯誤的同時,也會繼續執行接下來的程式碼,確保不會影響其他程式碼執行。