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






