摘要:上次我們聊過了前端監(jiān)控執(zhí)行錯誤和第三方資源加載異常的監(jiān)控,那么這次來聊聊如何捕獲錯誤。首先先安利下自己做的報錯監(jiān)控的項目歡迎和。使用對事件進(jìn)行監(jiān)聽即可捕捉到未被的錯誤。
上次我們聊過了前端監(jiān)控 JS 執(zhí)行錯誤和第三方資源加載異常的監(jiān)控,那么這次來聊聊如何捕獲 Promise 錯誤。
首先先安利下自己做的報錯監(jiān)控的項目 FE-Monitor 歡迎 issue 和 star 。
Promise 在前端中的使用已經(jīng)非常普遍了,但是許多開發(fā)者或許習(xí)慣了鏈?zhǔn)秸{(diào)用卻忘了捕獲 Promise 的錯誤了。
例如:
function forgetCatchError () { async() .then(() => { // code.. }) .then(() => console.log("forget catch error!")); }
上面的示例代碼中 async() 中和后續(xù)的兩個 then 中的代碼如果出錯或者 reject ,錯誤沒有得到處理。
在沒有使用 catch 方法指定錯誤處理的回調(diào)函數(shù),Promise 對象拋出的錯誤不會傳遞到外層代碼,即不會有任何反應(yīng)。當(dāng)promise被 reject 并且錯誤信息沒有被處理的時候,會拋出 unhandledrejection,這個錯誤不會被 window.onerror 和 addEventListener("error") 所監(jiān)聽到。
使用 unhandledrejection對 unhandledrejection 事件進(jìn)行監(jiān)聽即可捕捉到未被 catch 的 Promise 錯誤。
window.addEventListener("unhandledrejection", err => { console.log(err.reason) err.preventDefault(); }, false); // 或者 window.onunhandledrejection = function(err) { console.log(err.reason); return true; }
addEventListener 中調(diào)用 event 的 preventDefault() 可以讓 Promise 的錯誤不拋送到控制臺,在 onunhandledrejection 中則可以使用 return true 來達(dá)到相同的效果。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/105725.html
摘要:摘要徒手寫錯誤監(jiān)控。為什么用定時器呢,因?yàn)樵趩雾搼?yīng)用中,路由的切換和地址欄的變化是無法被監(jiān)控的,我確實(shí)沒有想到特別好的辦法來監(jiān)控,所以用了這種方式,如果有人有更好的辦法,請給我留言,謝謝。 摘要: 徒手寫JS錯誤監(jiān)控。 作者:一步一個腳印一個坑 原文:搭建前端監(jiān)控系統(tǒng)(二)JS錯誤監(jiān)控篇 Fundebug經(jīng)授權(quán)轉(zhuǎn)載,版權(quán)歸原作者所有。 背景:市面上的監(jiān)控系統(tǒng)有很多,大多收費(fèi),對于...
摘要:摘要的錯誤監(jiān)控插件同步支持異步錯誤監(jiān)控。此次更新,我們對的監(jiān)控插件做了相應(yīng)的更新,來更好地支持使用框架開發(fā)的應(yīng)用錯誤的監(jiān)控。程序運(yùn)行后,成功捕獲該錯誤總結(jié)更新到,對錯誤處理提供了更加強(qiáng)大的支持。 摘要: Fundebug 的 JavaScript 錯誤監(jiān)控插件同步支持 Vue.js 異步錯誤監(jiān)控。 Vue.js 從誕生至今已經(jīng) 5 年,尤大在今年 2 月份發(fā)布了重大更新,即Vue 2....
摘要:這樣很容易造成大的損失,提前做好錯誤收集和處理,可以減少損失。 編寫代碼只是做好項目的一小部分,寫代碼難免會碰到錯誤。因此,在項目上線后,我們還需要主動對項目的錯誤進(jìn)行收集,不能等用戶發(fā)現(xiàn)錯誤,再聯(lián)系我們,我們再去處理。這樣很容易造成大的損失,提前做好錯誤收集和處理,可以減少損失。 本人并沒有做過相關(guān)的工作,下面的文章只是我在學(xué)習(xí)中的一點(diǎn)思考和總結(jié),可能有比較多不足和錯誤的地方,希望大...
摘要:前端異常監(jiān)控如果是移除的流程,那么編程就一定是將放進(jìn)去的流程。過濾掉運(yùn)行時錯誤上報加載錯誤事件捕獲異常最新的規(guī)范中定義了事件用于全局捕獲對象沒有處理器時異常情況。 前端異常監(jiān)控 如果debug是移除bug的流程,那么編程就一定是將bug放進(jìn)去的流程。如果沒有用戶反饋問題,那就代表我們的產(chǎn)品棒棒噠,對不對? 主要內(nèi)容 Web規(guī)范中相關(guān)前端異常 異常按照捕獲方式分類 異常的捕獲方式 日志...
閱讀 1171·2021-11-24 09:38
閱讀 3613·2021-11-22 15:32
閱讀 3468·2019-08-30 15:54
閱讀 2576·2019-08-30 15:53
閱讀 1507·2019-08-30 15:52
閱讀 2564·2019-08-30 13:15
閱讀 1848·2019-08-29 12:21
閱讀 1408·2019-08-26 18:36