Vue errorHandler異常捕獲
異常捕獲介紹
1.在日常前端開發(fā)中對(duì)于異常監(jiān)控的方式可以采用 window.onerror 方式進(jìn)行監(jiān)聽
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方法無法捕獲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語法和接口請(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語法錯(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.通過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.通過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)
//通過fileName截取頁面名稱
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)文章
解決Ant Design Modal內(nèi)嵌Form表單initialValue值不動(dòng)態(tài)更新問題
這篇文章主要介紹了解決Ant Design Modal內(nèi)嵌Form表單initialValue值不動(dòng)態(tài)更新問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-10-10
vue做網(wǎng)頁開場(chǎng)視頻的實(shí)例代碼
這篇文章主要介紹了vue做網(wǎng)頁開場(chǎng)視頻的實(shí)例代碼,需要的朋友可以參考下2017-10-10
Vue使用Composition?API生成計(jì)算屬性computed
這篇文章主要為大家詳細(xì)介紹了Vue如何使用Composition?API實(shí)現(xiàn)生成計(jì)算屬性computed,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-06-06
詳解如何在vue項(xiàng)目中使用layui框架及采坑
這篇文章主要介紹了vue使用layui框架,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
Vue項(xiàng)目報(bào)錯(cuò):Uncaught SyntaxError: Unexpected token <
這篇文章主要介紹了Vue項(xiàng)目報(bào)錯(cuò):Uncaught SyntaxError: Unexpected token <,在引入第三方依賴的 JS 文件時(shí),遇到的一個(gè)問題,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-11-11

