作 者 | 肖榮強(路遷)
寫在前面
為了提升應用穩定性,我們對前端項目開展了腳本異常治理的工作,對生產上報的js error進行了整體排查,試圖通過降低腳本異常的發生頻次來提升相關告警的準確率,結合最近在這方面閱讀的相關資料,嘗試階段性的做個總結,下面我們來介紹下js異常處理的一些經驗。
先說概念
什么是異常
先來看一下官方的定義:
Error objects are thrown when runtime errors occur. The Error object can also be used as a base object for user-defined exceptions.
描述的很簡單,我們總結一下就是代碼在執行過程中遇到了問題,程序已經無法正常運行了,Error對象會被拋出,這一點它不同于大部分編程語言里使用的異常對象Exception,甚至更適合稱之為錯誤,應該說事實也確實如此,Error對象在未被拋出時候和js里其他的普通對象沒有任何差別是不會引發異常的,同時Error 對象也可用于用戶自定義錯誤的基礎對象。
看下面兩個例子:
try {
const 123variable = 2;
} catch(e) {
console.log('捕獲到了:', e)
}
↓↓↓執行結果↓↓↓
結論:只有在執行過程中的異常可以被捕獲,語法解析階段的異常或者不在當前同步任務中的異常都無法被捕獲。