如下官方api說明errorHandler-0:
先看下調(diào)用結(jié)果:我們在一個組件的生命周期里面運(yùn)行一段錯誤代碼如下圖:errorHandler-1
看下結(jié)果:這是未加errorHandler的結(jié)果仿野,很明顯變量不存在邑遏,代碼錯誤如圖errorHandler-2,可能會阻塞代碼繼續(xù)執(zhí)行下去,導(dǎo)致網(wǎng)頁崩潰捺典。我們通常處理未知代碼時會用到try.....catch,來避免這種情況任连。沒錯vue只是加了一個統(tǒng)一處理處蒙具,使用起來更方便。加過errorHandler之后的運(yùn)行代碼看下如圖errorHandler-3娃兽,errorHandler-4
errorHandler-3在main.js里面加如errorHandler函數(shù):
errorHandler-4是運(yùn)行結(jié)果:
接下來進(jìn)入源碼里面怎么做的菇民,我們在做其他其他項(xiàng)目也可以借鑒下errorHandler-5:
如果你定義了errorHandler函數(shù),則會調(diào)你的方法∮裎恚看下哪里都調(diào)用了globalHandleError翔试,在當(dāng)前文件里面handleError調(diào)用了errorHandler-6,看下handleError函數(shù)的調(diào)用复旬,如果所料不錯垦缅,正如api里面介紹的,生命周期鉤子里驹碍,Vue 自定義事件處理函數(shù)壁涎,v-on?DOM 監(jiān)聽器內(nèi)部會調(diào)用。一個一個來找下志秃,
指令里面errorHandler-7:
nextTick里面errorHandler-8:
watch里面:errorHandler-9
還有很多怔球。