最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue.js中的全局錯誤處理函數errorHandler用法

 更新時間:2024年06月05日 14:48:15   作者:小新-alive  
這篇文章主要介紹了Vue.js中的全局錯誤處理函數errorHandler用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Vue.js全局錯誤處理函數errorHandler

在 Vue.js 中,errorHandler 函數是全局錯誤處理函數,用于捕獲應用程序中未被捕獲的錯誤。

你可以通過定義 errorHandler 函數來自定義全局錯誤處理邏輯。

語法

Vue.config.errorHandler = function (err, vm, info) {
  // 錯誤處理邏輯
};

errorHandler 函數接收三個參數:

  • err:表示錯誤對象,包含有關錯誤的詳細信息,如錯誤消息、堆棧跟蹤等。
  • vm:表示引發(fā)錯誤的 Vue 組件實例。通過訪問該實例,你可以獲取組件的狀態(tài)、數據和方法。
  • info:提供有關錯誤的額外信息,通常是一個字符串,描述了錯誤發(fā)生的位置或上下文。

示例:

Vue.config.errorHandler = function (err, vm, info) {
  // 錯誤處理邏輯
  console.error('全局錯誤處理:', err, vm, info);
};

在上述示例中,errorHandler 函數被定義為一個全局錯誤處理函數。當應用程序中的任何組件拋出未被捕獲的錯誤時,該函數將被調用。你可以在該函數中編寫邏輯來處理錯誤,如記錄錯誤、顯示錯誤提示、進行錯誤恢復等。

需要注意的是,如果你在組件中定義了 errorCaptured 鉤子函數來捕獲錯誤,那么該組件的 errorCaptured 鉤子函數將優(yōu)先于全局的 errorHandler 函數被調用。

局錯誤處理函數errorHandler常見的使用場景

  • 捕獲和記錄錯誤:你可以使用 errorHandler 來捕獲應用程序中未被捕獲的錯誤,并將其記錄到日志中或發(fā)送給遠程錯誤跟蹤服務。這樣可以幫助你及時發(fā)現(xiàn)和解決潛在的問題。
  • 顯示錯誤提示:當應用程序中出現(xiàn)錯誤時,你可以使用 errorHandler 來顯示用戶友好的錯誤提示。例如,你可以通過通知、彈窗或類似的方式向用戶展示錯誤信息,以提供更好的用戶體驗。
  • 錯誤恢復和回退:在某些情況下,當應用程序遇到錯誤時,你可能希望進行錯誤恢復或回退操作。通過在 errorHandler 中執(zhí)行相應的邏輯,你可以嘗試修復錯誤或回到應用程序的先前狀態(tài)。
  • 上報錯誤統(tǒng)計:除了記錄錯誤,你還可以使用 errorHandler 來進行錯誤統(tǒng)計和分析。通過收集和匯總應用程序中的錯誤信息,你可以了解常見錯誤類型、發(fā)生頻率等信息,從而進行性能優(yōu)化和錯誤預防。
  • 處理異步錯誤:在異步操作中,錯誤通常需要手動捕獲和處理。在 errorHandler 中,你可以統(tǒng)一處理異步操作中出現(xiàn)的錯誤,避免它們被靜默丟失。

Vue errorHandler異常捕獲

異常捕獲介紹

1.在日常前端開發(fā)中對于異常監(jiān)控的方式可以采用 window.onerror 方式進行監(jiān)聽

	window.onerror = function(message, source, lineno, colno, error) {
	 	// message:錯誤信息(字符串)
		// source:發(fā)生錯誤的腳本URL
		// lineno:發(fā)生錯誤的行號
		// colno:發(fā)生錯誤的列號
		// 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中注冊

//因為接口報錯需要手動捕獲 創(chuàng)建公用方法
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 ))
	}
}

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)
	}
}

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Vue.js第四天學習筆記

    Vue.js第四天學習筆記

    這篇文章主要為大家詳細介紹了Vue.js第四天的學習筆記,json數組數據以csv格式導出,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Vite3結合Svelte3使用@import導入scss樣式

    Vite3結合Svelte3使用@import導入scss樣式

    這篇文章主要為大家介紹了Vite3結合Svelte3使用@import導入scss樣式實現(xiàn)實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • element使用自定義icon圖標的兩種解決方式

    element使用自定義icon圖標的兩種解決方式

    因為安裝原型圖設計實現(xiàn)頁面,在element自帶的圖標庫好像沒有,所以按鈕的圖標icon需要自定義,下面這篇文章主要給大家介紹了關于element使用自定義icon圖標的兩種解決方式,需要的朋友可以參考下
    2022-07-07
  • vue生成初始化名字相近的變量并放到數組中的示例代碼

    vue生成初始化名字相近的變量并放到數組中的示例代碼

    項目上有一個需求,頁面上有50、60個數據變量,是依次排序遞增的變量,中間有個別變量用不到,不想把這些變量直接定義在data() { }內,這篇文章主要介紹了vue生成初始化名字相近的變量并放到數組中的示例代碼,需要的朋友可以參考下
    2024-08-08
  • Vue 中mixin 的用法詳解

    Vue 中mixin 的用法詳解

    e中提供了一種混合機制--mixins,用來更高效的實現(xiàn)組件內容的復用。這篇文章主要介紹了Vue mixin 的用法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-04-04
  • Vue的移動端多圖上傳插件vue-easy-uploader的示例代碼

    Vue的移動端多圖上傳插件vue-easy-uploader的示例代碼

    這篇文章主要介紹了Vue的移動端多圖上傳插件vue-easy-uploader的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • vue項目出現(xiàn)頁面空白的解決方案

    vue項目出現(xiàn)頁面空白的解決方案

    今天小編就為大家分享一篇vue項目出現(xiàn)頁面空白的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • vue如何動態(tài)綁定img的src屬性(v-bind)

    vue如何動態(tài)綁定img的src屬性(v-bind)

    這篇文章主要介紹了vue如何動態(tài)綁定img的src屬性(v-bind),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • element-ui表格合并span-method的實現(xiàn)方法

    element-ui表格合并span-method的實現(xiàn)方法

    這篇文章主要介紹了element-ui表格合并span-method的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • vue+eslint+vscode配置教程

    vue+eslint+vscode配置教程

    這篇文章主要介紹了vue+eslint+vscode配置教程,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08

最新評論

广安市| 聂拉木县| 潼关县| 益阳市| 边坝县| 什邡市| 阳江市| 永靖县| 勐海县| 南部县| 高台县| 绵竹市| 呼图壁县| 改则县| 义马市| 泰兴市| 黄陵县| 扎鲁特旗| 正安县| 吴江市| 利辛县| 黔西| 武汉市| 镇雄县| 抚顺市| 老河口市| 阿巴嘎旗| 溧阳市| 丰镇市| 托克逊县| 海丰县| 新平| 克东县| 吴川市| 清苑县| 石城县| 汝南县| 扎兰屯市| 临江市| 台中县| 综艺|