前面に書かれたコードがどれだけ適切に記述されていても、すべての可能性のある例外を完全に処理することは不可能です。特に、データの大部分がユーザーやリモートの場所から取得される実稼働環境のアプリケーションの場合、すべてのデータがプログラムで指定されたとおりに生成されることを保証するのは困難です。実際のところ、テスターがそれを発見するか、顧客がそれを報告しない限り、それについて知る方法はありません。したがって、アプリケーションによって生成された不明な例外を報告することは非常に重要です。 Angular はデフォルトでグローバル例外管理も提供します。例外が発生すると、コンソール コンソールにスローされます。 NG-ZORRO を使用している場合、ICON がロードされていないという例外メッセージが頻繁に表示されることがあります。これも例外メッセージの一種です。 core.js:5980 ERROR エラー: [@ant-design/icons-angular]:アイコン設定が存在しないか、登録されていません。 IconNotFoundError (ant-design-icons-angular.js:94) で MapSubscriber.project (ant-design-icons-angular.js:222) で MapSubscriber._next (map.js:29) で MapSubscriber.next (Subscriber.js:49) で RefCountSubscriber._next (Subscriber.js:72) で RefCountSubscriber.next (Subscriber.js:49) で Subject.next (Subject.js:39) で ConnectableSubscriber._next (Subscriber.js:72) で ConnectableSubscriber.next (Subscriber.js:49) で CatchSubscriber.notifyNext (innerSubscribe.js:42) で Angular は ErrorHandler を通じて例外メッセージを一様に管理するため、handleError メソッドをオーバーライドして例外メッセージを再処理するだけで済みます。 エラーハンドラまず、custom-error-handler.ts ファイルを作成します。 '@angular/core' から ErrorHandler、Injectable をインポートします。 @インジェクタブル() エクスポートクラス CustomErrorHandler は ErrorHandler を拡張します { handleError(エラー: 任意): void { super.handleError(エラー); } } CustomErrorHandler は、現在のユーザー データ、現在の例外メッセージ オブジェクトなどを完全に取得し、HttpClient を介してバックエンドにレポートできるようにします。 以下はNG-ALAINのドキュメントサイトです。解析にはGoogle Analyticsを使用しているため、例外メッセージをonerrorに転送するだけで済みます。 '@angular/common' から { DOCUMENT } をインポートします。 '@angular/core' から ErrorHandler、Inject、Injectable をインポートします。 @インジェクタブル() エクスポートクラス CustomErrorHandler は ErrorHandler を拡張します { コンストラクタ(@Inject(DOCUMENT) プライベート doc: any) { 素晴らしい(); } handleError(エラー: 任意): void { 試す { super.handleError(エラー); } キャッチ (e) { this.reportError(e); } this.reportError(エラー); } プライベートレポートエラー(エラー: 文字列 | エラー): void { const win = this.doc.defaultView を any として扱います。 (勝ち&&勝ち.onerror)の場合{ if (エラーの種類 === '文字列') { win.onerror(エラー); } それ以外 { win.onerror(エラーメッセージ、未定義、未定義、未定義、エラー); } } } } 最後に、 CustomErrorHandler を AppModule に登録します。 @Ngモジュール({ プロバイダー: { 提供: ErrorHandler、使用クラス: CustomErrorHandler }, ] }) クラス AppModule をエクスポートします { } 結論は実は、もう一つ非常に重要なタスクがあります。本番環境のファイルはパッケージ化されて圧縮されています。つまり、生成される例外メッセージは実際のコード行数と同じにすることはできません。これには SourceMap のサポートが必要です。もちろん、通常の本番環境ではこのファイルは公開されないので、正しい行数と列数を取得したい場合は、中間層を使用し、バックエンドのソースマップ モジュールを使用して実際の行と列の値を解析する必要があります。 Angular の依存性注入 (DI) システムを使用すると、一部の Angular 組み込みモジュールをすばやく置き換えることができるため、ビジネス レベルを変更することなく、いくつかの特別なニーズをすばやく解決できます。 要約するAngular が予期しない例外エラーを処理する方法についての記事はこれで終わりです。Angular が予期しない例外エラーを処理する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: ショッピングカートのスライド削除効果を実装するReactネイティブサンプルコード
>>: Node.js における非同期プログラミングの知識ポイントの詳細な説明
目次背景表領域の断片化とは何ですか?表領域の断片化を確認する方法表スペースの断片化問題を解決する方法...
ビューポートとはモバイル ブラウザは、Web ページを仮想の「ウィンドウ」(ビューポート) に配置し...
Mysqlデータベーステーブルの定期的なバックアップの実装0. 背景実際の開発環境では、フロントエン...
いわゆるスライディングドアテクノロジーとは、さまざまな長さのテキストに合わせてボックスの背景を自動的...
目次連合テーブルの初期化ステートメントの実行連合の結果ユニオンオールグループ化十分なメモリステートメ...
目次概要フレームワークを選択する理由は何ですか? js のエンバーEmber.js と Vue.js...
これはネイティブ JS で実装されたテキスト スクロール効果です。この効果は通常、ニュース、ダイナミ...
問題 1: Baidu Map はタイル画像 (地図が写真で構成されている) を使用しています。ht...
この記事の例では、画像切り替え効果を実現するためのVueの具体的なコードを参考までに共有しています。...
1. ネイティブネットワークリクエスト1. XMLHttpRequest (W3C 標準) // 約...
nginx 設定ファイルのパスを表示する nginx -t 経由nginx -t コマンドの本来の機...
序文Vue には、v-if、v-bind、v-on などの豊富な組み込みディレクティブが用意されてい...
弊社のプロジェクトは Java で開発され、ミドルウェアは Tomcat でした。運用中に、Tomc...
この記事では、パスワードボックスの検証情報を実装するためのJavaScriptの具体的なコードを例と...
mapGettersヘルパー関数mapGettersヘルパー関数は、ストア内のゲッターをローカルの計...