JS 例外處理 – Let’s go!
語法 | |
try [ tryStatements ] [ Exit Try ] [ catch ] [ catchStatements ] [ finally] –RUN ALWAYS End Try | try: 為測試程式碼是否有Bug的區塊. catch: 為在try區塊出現Bug後執行的區塊. 在這區塊處理錯誤 finally: 為最後必定會執行的區塊. 如果所有程式碼在try區塊沒有錯誤, 就會行至Finally的區塊. 如果所有程式碼在try區塊有錯誤, 就會行至Catch的區塊, 再行至Finally的區塊. |
例子一 | |
try{ var a = 1000000; var b = 2000000; var z = a * b;} catch(e){ console.error(e);} finally { console.log(“Executed”); } | 流程: 1) 執行try區塊 2) a * b 的結果大於int 數值範圍, 出現 Exception 3) 執行Exception區塊 4) 執行Finally區塊 5) 繼續後面的程式 注意事項: 1) 程式即使在try區塊出現錯鋘, 執行Exception, Finally區塊後, 還可繼程式運行. 這可能是一個問題, 因為有些程式是流水式的, 不能錯過其中的一節, 一部份的錯誤讓它繼續執行可產生整體計算的問題. 2) 在Production Stage時, 在try區塊出現錯鋘, Programmer, User未必能立即看到, 而錯誤讓它繼續執行可令問題不能得到即時解決而累積下去. 例如在計算後相關的Database數據. |
例子二 | |
try { var a = 1000000; var b = 2000000; var z = a * b; } catch (e) { console.error(e); throw “Error”; } finally { console.log(“Executed”); } | 流程: 1) 執行try區塊 2) a * b 的結果大於int 數值範圍, 出現 Exception 3) 執行Exception區塊 4) throw exception 5) App掛掉, 不能繼續後面的程式 |