国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務(wù)器之家 - 編程語言 - JavaScript - angularjs - Angular處理未可知異常錯誤的方法詳解

Angular處理未可知異常錯誤的方法詳解

2021-12-31 16:51cipchk angularjs

這篇文章主要給大家介紹了關(guān)于Angular如何處理未可知異常錯誤的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

寫在前面

代碼寫得再好,始終都無法完整的處理所有可能產(chǎn)生異常,特別是生產(chǎn)環(huán)境中的應(yīng)用,很大一部分是數(shù)據(jù)來自用戶、遠(yuǎn)程,很難保證所有數(shù)據(jù)都按程序規(guī)定的產(chǎn)生。事實(shí)上,除非測試人員發(fā)現(xiàn)或者客戶報告,否則都無法得知。因此,將應(yīng)用產(chǎn)生的未可知異常進(jìn)而上報是非常重要的環(huán)節(jié)。

Angular 默認(rèn)情況下也提供了全局的異常管理,當(dāng)發(fā)生異常時,會把它扔到 Console 控制臺上。如果你在使用 NG-ZORRO 時,可能經(jīng)常就會遇到 ICON 未加載的異常消息,這也是異常消息的一種:

?
1
2
3
4
5
6
7
8
9
10
11
core.js:5980 ERROR Error: [@ant-design/icons-angular]:the icon setting-o does not exist or is not registered.
 at IconNotFoundError (ant-design-icons-angular.js:94)
 at MapSubscriber.project (ant-design-icons-angular.js:222)
 at MapSubscriber._next (map.js:29)
 at MapSubscriber.next (Subscriber.js:49)
 at RefCountSubscriber._next (Subscriber.js:72)
 at RefCountSubscriber.next (Subscriber.js:49)
 at Subject.next (Subject.js:39)
 at ConnectableSubscriber._next (Subscriber.js:72)
 at ConnectableSubscriber.next (Subscriber.js:49)
 at CatchSubscriber.notifyNext (innerSubscribe.js:42)

而 Angular 是通過 ErrorHandler 統(tǒng)一管理異常消息,而且只需要覆蓋其中的 handleError 方法并重新處理異常消息即可。

ErrorHandler

首先創(chuàng)建一個 custom-error-handler.ts 文件:

?
1
2
3
4
5
6
7
8
import { ErrorHandler, Injectable } from '@angular/core';
 
@Injectable()
export class CustomErrorHandler extends ErrorHandler {
 handleError(error: any): void {
 super.handleError(error);
 }
}

CustomErrorHandler 可以完整的獲取當(dāng)前用戶數(shù)據(jù)、當(dāng)前異常消息對象等,并允許通過 HttpClient 上報給后端。

以下是 NG-ALAIN 的文檔站,由于是使用 Google Analytics 來分析,只需要將異常消息轉(zhuǎn)給 onerror 即可:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import { DOCUMENT } from '@angular/common';
import { ErrorHandler, Inject, Injectable } from '@angular/core';
 
@Injectable()
export class CustomErrorHandler extends ErrorHandler {
 constructor(@Inject(DOCUMENT) private doc: any) {
 super();
 }
 
 handleError(error: any): void {
 try {
  super.handleError(error);
 } catch (e) {
  this.reportError(e);
 }
 this.reportError(error);
 }
 
 private reportError(error: string | Error): void {
 const win = this.doc.defaultView as any;
 if (win && win.onerror) {
  if (typeof error === 'string') {
  win.onerror(error);
  } else {
  win.onerror(error.message, undefined, undefined, undefined, error);
  }
 }
 }
}

最后,在 AppModule 模塊內(nèi)注冊 CustomErrorHandler :

?
1
2
3
4
5
6
@NgModule({
 providers: [
  { provide: ErrorHandler, useClass: CustomErrorHandler },
 ]
})
export class AppModule { }

結(jié)論

事實(shí)上還有一項(xiàng)非常重要的工作,生產(chǎn)環(huán)境中都是打包壓縮過后的,換言之所產(chǎn)生的異常消息也是無法與實(shí)際代碼行數(shù)相同的數(shù)字,這就需要 SourceMap 的支持,當(dāng)然正常的生產(chǎn)環(huán)境是不會發(fā)布這份文件的,所以如果想要得到正確的行列數(shù),還是需要借助一層中間層,在后端利用 source-map 模塊來解析出真正的行列數(shù)值。

Angular 的依賴注入(DI)系統(tǒng)可以使我們快速替換一些 Angular 內(nèi)置模塊,從而實(shí)現(xiàn)在不修改業(yè)務(wù)層面時快速解決一些特殊需求。

總結(jié)

到此這篇關(guān)于Angular如何處理未可知異常錯誤的文章就介紹到這了,更多相關(guān)Angular處理未可知異常錯誤內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://segmentfault.com/a/1190000038999559

延伸 · 閱讀

精彩推薦
  • angularjsangularJS中router的使用指南

    angularJS中router的使用指南

    這篇文章主要介紹了angularJS中router的使用方法和示例分享,需要的朋友可以參考下...

    angularJS教程網(wǎng)8372022-01-03
  • angularjs教你用AngularJS框架一行JS代碼實(shí)現(xiàn)控件驗(yàn)證效果

    教你用AngularJS框架一行JS代碼實(shí)現(xiàn)控件驗(yàn)證效果

    簡單來說Angular.js是google開發(fā)者設(shè)計和開發(fā)的一套前端開發(fā)框架,幫助你簡化前端開發(fā)的負(fù)擔(dān)。到底能簡化到什么程度呢,今天我們來看下,一行代碼實(shí)現(xiàn)控...

    AngularJS教程網(wǎng)8012022-01-03
  • angularjsangularJS 中input示例分享

    angularJS 中input示例分享

    這篇文章主要介紹了angularJS 中input示例分享,需要的朋友可以參考下...

    angularJS教程網(wǎng)5652022-01-03
  • angularjsangularjs實(shí)現(xiàn)與服務(wù)器交互分享

    angularjs實(shí)現(xiàn)與服務(wù)器交互分享

    AngularJS是Google開發(fā)的純客戶端JavaScript技術(shù)的WEB框架,用于擴(kuò)展、增強(qiáng)HTML功能,它專為構(gòu)建強(qiáng)大的WEB應(yīng)用而設(shè)計。...

    angularjs教程網(wǎng)7312022-01-03
  • angularjsangularJS提交表單(form)

    angularJS提交表單(form)

    這篇文章主要介紹了angularJS提交表單(form)的方法和示例,需要的朋友可以參考下...

    angularJS教程網(wǎng)3972022-01-03
  • angularjsAngular框架詳解之視圖抽象定義

    Angular框架詳解之視圖抽象定義

    這篇文章主要給大家介紹了關(guān)于Angular框架詳解之視圖抽象定義的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)...

    被刪6782022-02-24
  • angularjsAngularJS 中括號的作用詳解

    AngularJS 中括號的作用詳解

    這篇文章主要介紹了AngularJS 中括號的作用,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下...

    Java Pro8652022-02-22
  • angularjsAngular.JS中指令的命名規(guī)則詳解

    Angular.JS中指令的命名規(guī)則詳解

    這篇文章主要給大家介紹了關(guān)于Angular.JS中指令命名規(guī)則的相關(guān)資料,文中介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看...

    劉小光10402022-01-17
主站蜘蛛池模板: 亚洲一区 中文字幕 | 日本中文字幕久久 | 亚洲精品福利在线 | 99精品欧美一区二区蜜桃免费 | 欧美日韩一区在线 | 欧美日韩第一页 | 在线观看成人 | 日韩国产一区二区 | 81精品国产乱码久久久久久 | 一级黄色大片 | 日本一区二区三区精品视频 | 久久久久久国产精品mv | 看日韩毛片 | 国产高潮国产高潮久久久91 | 成人午夜电影在线观看 | 精品成人国产在线观看男人呻吟 | 黄色网页在线 | 亚洲av毛片一区二二区三三区 | 日本不卡免费新一二三区 | 国产精品美女 | 午夜影晥| 午夜视频在线播放 | 成人国产综合 | 亚洲成人av一区二区三区 | 成人网av| 久久亚洲美女 | 天堂久久久久久 | 国产精品久久久久久久久久免费 | 亚洲av毛片一区二二区三三区 | 色视频网 | 久久精品一区二区三区四区 | 久久午夜精品 | 日韩中文视频 | 亚洲电影在线观看 | 成人在线一区二区 | 亚洲成人高清 | 国产精品永久久久久久久久久 | 欧美日韩成人在线观看 | 久久久久久久久久久久免费 | 国产精品一区二区三区免费 | 精品国产一区二区三区久久久 |