Vue errorHandler異常捕獲
異常捕獲介紹
1.在日常前端開(kāi)發(fā)中對(duì)于異常監(jiān)控的方式可以采用 window.onerror 方式進(jìn)行監(jiān)聽(tīng)
window.onerror = function(message, source, lineno, colno, error) { // message:錯(cuò)誤信息(字符串) // source:發(fā)生錯(cuò)誤的腳本URL // lineno:發(fā)生錯(cuò)誤的行號(hào) // colno:發(fā)生錯(cuò)誤的列號(hào) // error:Error對(duì)象 } //或者 window.addEventListener('error', function(e) { console.log(e) console.log(e.target) })
2.在vue中需要使用errorHandler方法onerror方法無(wú)法捕獲Vue組件信息
Vue.config.errorHandler = function (err, vm, info) { // err: 具體錯(cuò)誤信息 // vm: 當(dāng)前錯(cuò)誤所在的Vue實(shí)例 // info: 錯(cuò)誤所在的生命周期鉤子 }
errorHandler實(shí)際應(yīng)用
針對(duì)項(xiàng)目中錯(cuò)誤的js語(yǔ)法和接口請(qǐng)求報(bào)錯(cuò)進(jìn)行捕獲,需要注意的是接口捕獲需要手動(dòng)捕獲
1.在main.js中注冊(cè)
//因?yàn)榻涌趫?bào)錯(cuò)需要手動(dòng)捕獲 創(chuàng)建公用方法 const errorHandler = (err, vm, info) => { if(err.isAxiosError){ //axios請(qǐng)求錯(cuò)誤 }else{ //js語(yǔ)法錯(cuò)誤 console.log('err:'err.toString()) } } //調(diào)用 Vue.config.errorHandler = errorHandler //axios手動(dòng)捕獲使用 綁定 prototype Vue.prototype.$throw = (error) => errorHandler(error, this)
2.axios錯(cuò)誤捕獲在封裝好的axios請(qǐng)求中進(jìn)行錯(cuò)誤響應(yīng)捕獲,將錯(cuò)誤信息交給 errorHadaler 函數(shù)進(jìn)行處理
Vue.$throw(error) //或 Vue.prototype.$throw(error)
對(duì)于error信息的解析
1.通過(guò)Json.stringify()對(duì)err進(jìn)行序列化
const errorHandler = (err, vm, info) => { if(err.isAxiosError){ //axios請(qǐng)求錯(cuò)誤為手動(dòng)捕獲 不需要進(jìn)行解析處理 }else{ const errJson = JSON.stringify(err, Object.getOwnPropertyNames(err), 2) console.log(JSON.parse(errJson )) } }
2.通過(guò)error-stack-parser解析error堆棧
安裝方式:
npm install error-stack-parseryarn add error-stack-parser
//引入error-stack-parser import ErrorStackParser from 'error-stack-parser' const errorHandler = (err, vm, info) => { if(err.isAxiosError){ //axios請(qǐng)求錯(cuò)誤為手動(dòng)捕獲 不需要進(jìn)行解析處理 }else{ const errJson = ErrorStackParser.parse(err)[0] console.log(errJson) //通過(guò)fileName截取頁(yè)面名稱 const fileName = stackInfo.fileName.match(/src.*?.vue/g)[0] console.log(fileName) } }
到此這篇關(guān)于Vue errorHandler異常捕獲的文章就介紹到這了,更多相關(guān)Vue errorHandler異常捕獲內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Electron采集桌面共享和系統(tǒng)音頻(桌面捕獲)實(shí)例
這篇文章主要為大家介紹了Electron采集桌面共享和系統(tǒng)音頻(桌面捕獲)實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10vue項(xiàng)目開(kāi)啟gzip壓縮功能簡(jiǎn)單實(shí)例
這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目開(kāi)啟gzip壓縮功能的相關(guān)資料,gizp壓縮是一種http請(qǐng)求優(yōu)化方式,通過(guò)減少文件體積來(lái)提高加載速度,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07vue+golang實(shí)現(xiàn)上傳微信頭像功能
這篇文章主要介紹了vue+golang實(shí)現(xiàn)上傳微信頭像功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-10-10vue移動(dòng)端微信授權(quán)登錄插件封裝的實(shí)例
今天小編就為大家分享一篇vue移動(dòng)端微信授權(quán)登錄插件封裝的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08vue3中安裝使用vue-i18n實(shí)時(shí)切換語(yǔ)言且不用刷新
這篇文章主要介紹了vue3中安裝使用vue-i18n實(shí)時(shí)切換語(yǔ)言不用刷新問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04vue3+element?plus中利用el-menu如何實(shí)現(xiàn)路由跳轉(zhuǎn)
這篇文章主要給大家介紹了關(guān)于vue3+element?plus中利用el-menu如何實(shí)現(xiàn)路由跳轉(zhuǎn)的相關(guān)資料,在Vue?Router中我們可以使用el-menu組件來(lái)實(shí)現(xiàn)菜單導(dǎo)航,通過(guò)點(diǎn)擊菜單項(xiàng)來(lái)跳轉(zhuǎn)到不同的路由頁(yè)面,需要的朋友可以參考下2023-12-12Vue 將后臺(tái)傳過(guò)來(lái)的帶html字段的字符串轉(zhuǎn)換為 HTML
這篇文章主要介紹了Vue 將后臺(tái)傳過(guò)來(lái)的帶html字段的字符串轉(zhuǎn)換為 HTML ,需要的朋友可以參考下2018-03-03基于vue中keep-alive緩存問(wèn)題的解決方法
今天小編就為大家分享一篇基于vue中keep-alive緩存問(wèn)題的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09vue如何實(shí)現(xiàn)動(dòng)態(tài)加載腳本
這篇文章主要介紹了vue如何實(shí)現(xiàn)動(dòng)態(tài)加載腳本,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02