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

Angular處理未可知異常錯(cuò)誤的方法詳解

 更新時(shí)間:2021年01月17日 09:46:51   作者:cipchk  
這篇文章主要給大家介紹了關(guān)于A(yíng)ngular如何處理未可知異常錯(cuò)誤的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

寫(xiě)在前面

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

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

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 是通過(guò) ErrorHandler 統(tǒng)一管理異常消息,而且只需要覆蓋其中的 handleError 方法并重新處理異常消息即可。

ErrorHandler

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

import { ErrorHandler, Injectable } from '@angular/core';

@Injectable()
export class CustomErrorHandler extends ErrorHandler {
 handleError(error: any): void {
 super.handleError(error);
 }
}

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

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

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)注冊(cè) CustomErrorHandler :

@NgModule({
 providers: [
  { provide: ErrorHandler, useClass: CustomErrorHandler },
 ]
})
export class AppModule { }

結(jié)論

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

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

總結(jié)

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

相關(guān)文章

  • Angular 路由route實(shí)例代碼

    Angular 路由route實(shí)例代碼

    下面小編就為大家?guī)?lái)一篇Angular 路由route實(shí)例代碼。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-07-07
  • AngularJs expression詳解及簡(jiǎn)單示例

    AngularJs expression詳解及簡(jiǎn)單示例

    本文主要介紹AngularJs expression,這里整理了詳細(xì)的資料,并附示例代碼,有興趣的小伙伴可以參考下
    2016-09-09
  • Angular實(shí)現(xiàn)的簡(jiǎn)單定時(shí)器功能示例

    Angular實(shí)現(xiàn)的簡(jiǎn)單定時(shí)器功能示例

    這篇文章主要介紹了Angular實(shí)現(xiàn)的簡(jiǎn)單定時(shí)器功能,結(jié)合實(shí)例形式分析了AngularJS定時(shí)器功能的簡(jiǎn)單實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下
    2017-12-12
  • Angular?ViewChild組件間通信demo

    Angular?ViewChild組件間通信demo

    這篇文章主要為大家介紹了Angular?ViewChild組件間通信demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • AngularJS壓縮JS技巧分析

    AngularJS壓縮JS技巧分析

    這篇文章主要介紹了AngularJS壓縮JS的操作技巧,分析了AngularJS進(jìn)行壓縮(minify)之后出現(xiàn)的問(wèn)題與相應(yīng)的解決方法,需要的朋友可以參考下
    2016-11-11
  • AngularJS入門(mén)教程之更多模板詳解

    AngularJS入門(mén)教程之更多模板詳解

    本文主要介紹AngularJS模板的資料知識(shí),這里幫大家整理了詳細(xì)的模版資料,及實(shí)現(xiàn)示例代碼,幫助大家學(xué)習(xí)AngularJS的知識(shí),有需要的小伙伴可以參考下
    2016-08-08
  • 解決angularjs service中依賴(lài)注入$scope報(bào)錯(cuò)的問(wèn)題

    解決angularjs service中依賴(lài)注入$scope報(bào)錯(cuò)的問(wèn)題

    今天小編就為大家分享一篇解決angularjs service中依賴(lài)注入$scope報(bào)錯(cuò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • 詳解Angular 4.x 動(dòng)態(tài)創(chuàng)建組件

    詳解Angular 4.x 動(dòng)態(tài)創(chuàng)建組件

    本篇文章主要介紹了詳解Angular 4.x 動(dòng)態(tài)創(chuàng)建組件,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • AngularJS中取消對(duì)HTML片段轉(zhuǎn)義的方法例子

    AngularJS中取消對(duì)HTML片段轉(zhuǎn)義的方法例子

    這篇文章主要介紹了AngularJS中取消對(duì)HTML片段轉(zhuǎn)義的方法例子,在一些需要顯示HTML的地方,就要取消AngularJS的轉(zhuǎn)義,本文就介紹了這種方法,需要的朋友可以參考下
    2015-01-01
  • 詳解JavaScript的AngularJS框架中的作用域與數(shù)據(jù)綁定

    詳解JavaScript的AngularJS框架中的作用域與數(shù)據(jù)綁定

    這篇文章主要介紹了JavaScript的AngularJS框架中的作用域與數(shù)據(jù)綁定,包括作用域的繼承以及數(shù)據(jù)的單向和雙向綁定等重要知識(shí)點(diǎn),需要的朋友可以參考下
    2016-03-03

最新評(píng)論

泽库县| 瑞安市| 安乡县| 肇东市| 白山市| 远安县| 汾阳市| 南昌县| 扎囊县| 湟中县| 南澳县| 肃宁县| 确山县| 开封市| 东莞市| 云阳县| 聂拉木县| 南和县| 阿克| 岱山县| 搜索| 永济市| 汽车| 寻甸| 南投市| 措勤县| 阜南县| 新民市| 墨玉县| 文昌市| 体育| 南丰县| 锡林郭勒盟| 永顺县| 潞城市| 碌曲县| 江永县| 莱阳市| 西宁市| 罗源县| 沅陵县|