Vue errorHandler异常捕获

异常捕获介绍

1.在日常前端开发中对于异常监控的方式可以采用 window.onerror 方式进行监听

    window.onerror = function(message, source, lineno, colno, error) {
        // message:错误信息(字符串)
        // source:发生错误的脚本URL
        // lineno:发生错误的行号
        // colno:发生错误的列号
        // error:Error对象
    }
    //或者
    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: 具体错误信息
      // vm: 当前错误所在的Vue实例
      // info: 错误所在的生命周期钩子
    }

errorHandler实际应用

针对项目中错误的js语法和接口请求报错进行捕获,==需要注意的是接口捕获需要手动捕获==
1.在main.js中注册

//因为接口报错需要手动捕获 创建公用方法
const errorHandler = (err, vm, info) => {
    if(err.isAxiosError){
        //axios请求错误
    }else{
        //js语法错误
        console.log('err:'err.toString())
    }
}
//调用
Vue.config.errorHandler = errorHandler
//axios手动捕获使用 绑定 prototype
Vue.prototype.$throw = (error) => errorHandler(error, this)

2.axios错误捕获
在封装好的axios请求中进行错误响应捕获,将错误信息交给 errorHadaler 函数进行处理

Vue.$throw(error)
//或 
Vue.prototype.$throw(error)

对于error信息的解析

1.通过Json.stringify()对err进行序列化

const errorHandler = (err, vm, info) => {
    if(err.isAxiosError){
        //axios请求错误为手动捕获 不需要进行解析处理 
    }else{
        const errJson = JSON.stringify(err, Object.getOwnPropertyNames(err), 2)
        console.log(JSON.parse(errJson ))
    }
}
error.jpg

参考: JSON.stringify() 去序列化一个 Error

2.通过error-stack-parser解析error堆栈

安装方式:
npm install error-stack-parser
yarn add error-stack-parser

//引入error-stack-parser
import ErrorStackParser from 'error-stack-parser'
const errorHandler = (err, vm, info) => {
    if(err.isAxiosError){
        //axios请求错误为手动捕获 不需要进行解析处理 
    }else{
        const errJson = ErrorStackParser.parse(err)[0]
        console.log(errJson)
        //通过fileName截取页面名称
        const fileName = stackInfo.fileName.match(/src.*?.vue/g)[0]
        console.log(fileName)
    }
}
err.jpg
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容