国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

詳解Vue 的異常處理機制

瀏覽:78日期:2022-10-22 18:06:09

最近需要在業務中加一個全局的 filter,filter 會對輸入進行驗證,用于進行前端監控。其中一個要處理的問題,就是驗證失敗后如何發送異常日志,這個過程中順便了解了一下 vue 的異常處理機制。

errorCaptured、errorHandler

vue 提供了兩個 API 用于異常的捕獲,分別是 errorCaptured 和 errorHandler:

errorCaptured

errorCaptured 是組件的一個鉤子函數,用于在組件級別捕獲異常。當這個鉤子函數返回 false 時,會阻止異常進一步向上冒泡,否則會不斷向父組件傳遞,直到 root 組件。

errorHandler

errorHandler 是一個全局的配置項,用來在全局捕獲異常。例如Vue.config.errorHandler = function (err, vm, info) {}。

error.js

在 vue 源碼中,異常處理的邏輯放在 /src/core/util/error.js 中:

import config from ’../config’import { warn } from ’./debug’import { inBrowser } from ’./env’export function handleError (err: Error, vm: any, info: string) { if (vm) { let cur = vm while ((cur = cur.$parent)) { const hooks = cur.$options.errorCaptured if (hooks) { for (let i = 0; i < hooks.length; i++) { try { const capture = hooks[i].call(cur, err, vm, info) === false if (capture) return } catch (e) { globalHandleError(e, cur, ’errorCaptured hook’) } } } } } globalHandleError(err, vm, info)}function globalHandleError (err, vm, info) { if (config.errorHandler) { try { return config.errorHandler.call(null, err, vm, info) } catch (e) { logError(e, null, ’config.errorHandler’) } } logError(err, vm, info)}function logError (err, vm, info) { if (process.env.NODE_ENV !== ’production’) { warn(`Error in ${info}: '${err.toString()}'`, vm) } /* istanbul ignore else */ if (inBrowser && typeof console !== ’undefined’) { console.error(err) } else { throw err }}

文件不長,向外暴露了一個 handleError 方法,在需要捕獲異常的地方調用。handleError 方法中首先獲取到報錯的組件,之后遞歸查找當前組件的父組件,依次調用 errorCaptured 方法。在遍歷調用完所有 errorCaptured 方法、或 errorCaptured 方法有報錯時,會調用 globalHandleError 方法。

globalHandleError 方法調用了全局的 errorHandler 方法。

如果 errorHandler 方法自己又報錯了呢?生產環境下會使用 console.error 在控制臺中輸出。

可以看到 errorCaptured 和 errorHandler 的觸發時機都是相同的,不同的是 errorCaptured 發生在前,且如果某個組件的 errorCaptured 方法返回了 false,那么這個異常信息不會再向上冒泡也不會再調用 errorHandler 方法。

以上就是詳解Vue 的異常處理機制的詳細內容,更多關于vue 異常處理的資料請關注好吧啦網其它相關文章!

標簽: Vue
相關文章:
主站蜘蛛池模板: 免费狼人久久香蕉网 | 国产免费成人在线视频 | 国产精品欧美日韩 | 久久亚洲国产中v天仙www | 久久久久久久性高清毛片 | 国产成人免费永久播放视频平台 | 成人一级免费视频 | 亚洲一区二区三区四区在线观看 | 永久免费不卡在线观看黄网站 | 成人精品国产 | 欧美激情国内自拍偷 | 1024香蕉国产在线视频 | 精品欧美一区二区三区免费观看 | 精品国语_高清国语自产 | 亚洲女人网 | 国产片91人成在线观看 | 日韩精品网 | 日本一级特大毛片 | 国产三级在线 | 日本特级淫片免费看 | 国内精品自产拍在线观看91 | 亚洲第一成年网站大全亚洲 | 免费国产成人高清在线观看视频 | 在线视频一区二区日韩国产 | 成年人看的黄色片 | 亚洲欧洲一二三区机械有限公司 | 欧美a在线看 | 无码免费一区二区三区免费播放 | 九九精品视频在线 | 一级特黄性色生活片一区二区 | 国产视频久久久 | 亚洲一级高清在线中文字幕 | 亚洲成a人片在线看 | 欧美三级在线观看视频 | 人成精品 | 在线亚洲欧美日韩 | 欧美国产三级 | 亚洲成a人在线观看 | 台湾三级在线播放 | 欧美亚洲国产精品 | 亚洲综合一 |