欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2021年01月17日 09:46:51   作者:cipchk  
這篇文章主要給大家介紹了關(guān)于Angular如何處理未可知異常錯(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)于Angular如何處理未可知異常錯(cuò)誤的文章就介紹到這了,更多相關(guān)Angular處理未可知異常錯(cuò)誤內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解如何在Angular優(yōu)雅編寫(xiě)HTTP請(qǐng)求

    詳解如何在Angular優(yōu)雅編寫(xiě)HTTP請(qǐng)求

    這篇文章主要介紹了詳解如何在Angular優(yōu)雅編寫(xiě)HTTP請(qǐng)求,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Angular.js實(shí)現(xiàn)掃碼槍掃碼并生成二維碼

    Angular.js實(shí)現(xiàn)掃碼槍掃碼并生成二維碼

    這篇文章主要為大家介紹了Angular.js實(shí)現(xiàn)掃碼槍掃碼并生成二維碼示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • AngularJS中監(jiān)視Scope變量以及外部調(diào)用Scope方法

    AngularJS中監(jiān)視Scope變量以及外部調(diào)用Scope方法

    在AngularJS中,有時(shí)候需要監(jiān)視Scope中的某個(gè)變量,因?yàn)樽兞康母淖儠?huì)影響一些界面元素的顯示,接下來(lái)通過(guò)本文給大家介紹AngularJS中監(jiān)視Scope變量以及外部調(diào)用Scope方法,需要的朋友參考下吧
    2016-01-01
  • Angular angular-file-upload文件上傳的示例代碼

    Angular angular-file-upload文件上傳的示例代碼

    這篇文章主要介紹了Angular angular-file-upload文件上傳的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • Angular事件之不同組件間傳遞數(shù)據(jù)的方法

    Angular事件之不同組件間傳遞數(shù)據(jù)的方法

    這篇文章主要介紹了Angular事件之不同組件間傳遞數(shù)據(jù)的方法,利用Angular Event在不同組件之間傳遞數(shù)據(jù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • angular中的cookie讀寫(xiě)方法

    angular中的cookie讀寫(xiě)方法

    本篇文章主要介紹了angular中的cookie讀寫(xiě)方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • 關(guān)于Angular2 + node接口調(diào)試的解決方案

    關(guān)于Angular2 + node接口調(diào)試的解決方案

    這篇文章主要給大家介紹了關(guān)于Angular2 + node接口調(diào)試的解決方案,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-05-05
  • AngularJS的ng-repeat指令與scope繼承關(guān)系實(shí)例詳解

    AngularJS的ng-repeat指令與scope繼承關(guān)系實(shí)例詳解

    這篇文章主要介紹了AngularJS的ng-repeat指令與scope繼承關(guān)系,結(jié)合實(shí)例形式通過(guò)ng-repeat指令詳細(xì)分析了scope繼承關(guān)系,需要的朋友可以參考下
    2017-01-01
  • 基于Angularjs實(shí)現(xiàn)分頁(yè)功能

    基于Angularjs實(shí)現(xiàn)分頁(yè)功能

    這篇文章主要介紹了基于Angularjs實(shí)現(xiàn)分頁(yè)功能的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-05-05
  • AngularJS 輸入驗(yàn)證的原理解析

    AngularJS 輸入驗(yàn)證的原理解析

    AngularJS 的輸入驗(yàn)證是一個(gè)強(qiáng)大的功能,可以幫助開(kāi)發(fā)者確保用戶(hù)輸入的數(shù)據(jù)是準(zhǔn)確和完整的,這篇文章主要介紹了AngularJS 輸入驗(yàn)證,需要的朋友可以參考下
    2024-07-07

最新評(píng)論