js異常捕獲

如果覺(jué)得還有點(diǎn)用,請(qǐng)您給我一個(gè)贊!您的贊是我堅(jiān)持下去的動(dòng)力

常用的3種異常捕獲方式

1、listener監(jiān)聽(tīng)

window.addEventListener('error',(e)=>{
})
window.addEventListener('error',(e)=>{
  //可以捕獲<img>標(biāo)簽資源加載失敗
},true)

特點(diǎn):

  • 利用冒泡階段的捕獲,可以捕獲到<img>等標(biāo)簽的資源加載失敗的onerror事件
  • 捕獲順序優(yōu)先級(jí)高于 window.onerror ,也就是異常會(huì)先進(jìn)入listener內(nèi),然后再進(jìn)入到window.onerror
  • 如果在處理完事件,不想window.onerror或其他listener捕獲的話,使用 stopImmediatePropagation()來(lái)攔截

2、全局onerror

window.onerror=function(e){
}

3、try-catch

try{
  return 1;
}catch(e){
  return 2;
}finally{
  return 3;
}
  return 4;

特點(diǎn):

  • try{}內(nèi)的異常會(huì)被catch{}部分捕獲,不會(huì)繼續(xù)被window.onerrorlistener捕獲
  • finally{}內(nèi)的異常會(huì)直接被Listernwindow.onerror捕獲,不會(huì)被自己的catch{}捕獲
  • catch{}塊內(nèi)產(chǎn)生新的異常,將不會(huì)被任何東西捕獲
  • 關(guān)于這幾個(gè)return
    • 當(dāng)有finally{}的時(shí)候,如果finally{}內(nèi)沒(méi)有產(chǎn)生新的異常則return 3,如果產(chǎn)生了異常則不會(huì)return而是中斷了.
    • 當(dāng)沒(méi)有finally{}的時(shí)候,如果進(jìn)入了catch{}return 2,不然則return 1
    • return 4不會(huì)被執(zhí)行到

4、監(jiān)聽(tīng)unhandledrejection

window.addEventListener('unhandledrejection',(e)=>{
})

特點(diǎn):

  • 用于監(jiān)聽(tīng)Promise內(nèi)產(chǎn)生未被catch的異常
  • Promise在catch自己的異常中產(chǎn)生的新異常也將被捕獲

如果覺(jué)得還有點(diǎn)用,請(qǐng)您給我一個(gè)贊!您的贊是我堅(jiān)持下去的動(dòng)力

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容