プログラムは上から下へ順番に実行され、いくつかの制御文によって実行経路を変更することができます。制御文の影響を受けて、プログラムの最終的な実行経路が制御フローとなります。 js の制御文には、if、for、while、try catch などがあり、プログラムの方向を変更します。 プログラムはデータに対して動作します。プログラムの実行中、つまり制御フローの進行に伴って変化するデータは、データフローと呼ばれます。 当然のことながら、データ フローは制御フローに依存しており、プログラム分析におけるデータ フロー分析も、まず制御フロー分析を実行する必要があります。 たとえば、次のようなコードがあります。 定数a = 1; bとします。 (a === 1)の場合{ '1111' です。 } それ以外 { '2222' を返します。 } a は 1 なので、 b = '1111'; が実行されます。これが制御フロー、つまりプログラムが最終的に実行するコードです。プログラムの方向を分析し、デッドコードの削除などの最適化を実行するために使用できます。 制御フローが実行されると、b に値 2222 が割り当てられます。これがデータ フロー、つまり値の変更プロセスであり、特定のステートメント内の変数の値を分析するために使用できます。 プログラムは、異なるデータに対して異なる処理を実行します。データが間違っている場合、処理プログラムはそれを処理できず、エラーが報告され、後続の制御フローが中断されます。たとえば、データが空である、データ形式が正しくないなどです。このとき、エラーを処理するために try catch が使用されます。これは例外処理とも呼ばれます。 例外処理は次の 2 つの目的で行います。 1. 誤ったロジックを裏付ける根拠を提供します。 たとえば、パラメータの解析でエラーが発生した場合は、catch でデフォルト値を割り当てます。このエラーは処理後に再度報告する必要はありません。この場合、try catch もロジックの一部であり、if else と同等です。 2. 報告されたエラーについて、よりシナリオに基づいた説明を提供します。 JSエラーはJSエンジンによってスローされます。たとえば、nullオブジェクトのメソッドを呼び出すとTypeErrorが報告され、宣言されていない変数を使用すると 参照エラー。特定のエラーはさまざまなシナリオで報告され、さまざまな意味を持ちます。 このオブジェクトがユーザー入力から取得された場合、ユーザー入力が間違っていることを意味します。このオブジェクトがサーバーから取得された場合、サーバーから返されたデータが間違っていることを意味します。異なるシナリオでは、同じエラーがより具体的な意味を持つため、try catch を実行する必要があります。次に、シナリオ情報を含むエラーの説明を含むカスタム エラーをスローします。 多くのライブラリやフレームワークは、この点で優れた機能を果たします。報告されたエラーにはすべて、特定のシナリオ情報と解決策が含まれています。エラー番号によって管理されるものもあり、解決策は errorno を通じて照会できます。これはエラーのカスタマイズされた処理です。 ただし、ビジネス コードで報告されるエラーの多くはこの方法では処理されず、元のエラーが直接報告されます。例外監視プラットフォームを使用して、グローバルにスローされるエラーを収集します。これらのエラーは、比較的基本的な情報であることが多いです。エラーの場所とスタックが含まれていますが、ソース コードを調べて問題を特定する必要があります。 たとえば、オブジェクトが空であるというエラーが報告されますが、どのオブジェクトが空なのか、その理由は何なのか、どのように解決するのか、数値があるかどうかをどのように確認すればよいでしょうか。 さまざまなエラーをキャッチし、特定のシナリオに対してカスタム エラーをスローできれば、もっと良いと思いませんか?サードパーティのライブラリはこれを非常にうまく実行しますが、ビジネス コード内のシナリオベースのカスタム エラーに注意を払う人はほとんどいません。 もちろん、フロントエンドのビジネス コードのユーザーはインターフェイスを通じてソフトウェアを使用するため、実際には、さまざまなエラーに対していくつかの UI プロンプトを提供するだけで十分です。ライブラリコードは開発者向けなので、さまざまなエラーをシナリオベースで説明し、エラー番号と解決策も提供する必要があります。 しかし、ビジネス コードではエラーをサードパーティ ライブラリ コードのように扱う必要があると思います。意味のないネイティブ エラーを報告せず、特定の意味を持つカスタム エラーを報告します。これにより、トラブルシューティングと問題解決がはるかに簡単になります。 ただし、シナリオベースのカスタム エラーは問題のトラブルシューティングに役立ちますが、コードによって報告される可能性のあるエラーを理解した上で行う必要があります。報告するエラー メッセージが実際のエラーの原因と異なる場合、問題のトラブルシューティングが難しくなります。元のエラーを報告することをお勧めします。 要約する プログラムの実行プロセスは制御フローであり、制御文の影響を受けます。実行プロセス中にデータは変化します。データの変化はデータフローと呼ばれます。制御フローとデータフローは、プログラム分析でよく分析される 2 つの側面です。 エラーは制御フローを中断するため、try catch を通じてエラーに対処する必要があります。 エラー処理には 2 つの目的があります。 1 つは、if else と同等のフォールバック処理を実行することであり、エラーを報告する必要はありません。 1 つは、ネイティブ JS エラーのシナリオベースの説明を作成し、より具体的な情報を含むエラー オブジェクトを作成してそれを破棄することです。 多くのライブラリはこれを非常にうまく実行し、エラー番号と解決策も提供します。ただし、多くのビジネス コードでは、スローされたエラーに対するシナリオベースのパッケージ化を行わずに、UI 上でユーザーにフィードバックを提供するだけです。その結果、エラー監視プラットフォームによって収集されるエラーは比較的基本的なエラーとなり、トラブルシューティングのためにソース コードをチェックする必要があります。ライブラリ コードのようにシナリオ ベースのエラー パッケージングも実行できれば、問題のカウントとトラブルシューティングがはるかに簡単になります。これは、ほとんどの JavaScript エンジニアが実行していないことです。 Javascript における try catch の役割に関するこの記事はこれで終わりです。Javascript における try catch の役割についてさらに詳しく知りたい場合は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: JDBC-idea で mysql をインポートして java jar パッケージに接続する (mac)
Linuxで環境変数を削除するには?unsetコマンドを使用してすぐに削除します1. Linuxクラ...
ラベル表示モード(重要) divタグとspanタグ1. スタイルはまったく同じですが、ラベルが異なり...
1.すべてのIPアドレスが3つのページa1.htm、a2.htm、a3.htmにアクセスするのを禁止...
目次序文1. コードによって設定されたデータベース名またはパスワードがローカルデータベースと一致して...
Nginx は、マスター プロセス (MasterProcess) と、同じ数のホスト CPU コア...
MySQL ストレージ エンジンの概要ストレージ エンジンとは何ですか? MySQL のデータは、さ...
1. コンテナを作成して実行するdocker run -it --rm centos:latest ...
目次序文コンポーネントライブラリの作成主要な構成の変更ディレクトリレイアウトの調整ライブラリ構築のた...
MySQL トランザクション サポートは、MySQL サーバー自体にバインドされているのではなく、ス...
序文Linux のファイル権限管理はとにかく素晴らしいです。SUID、SGID、SBIT の機能を確...
1. Docker とは何ですか? (1)DockerはLinuxコンテナ内でアプリケーションを実行...
目次1. 背景2. 操作手順3. Dockerをインストールする4. 主なサービス構成5. サービス...
今日、vue3+viteプロジェクトの実践で、svgを使用する場合、以前の記述方法が使用できないこと...
この記事では、VMware Workstation 14 Proにシステムをインストールする方法を紹...
目次JavaScript プロトタイプチェーンオブジェクトプロトタイプトップレベルのプロトタイプOb...