JS の try catch ステートメントとその 2 つの関数を詳細に分析します。

青灯夜游
リリース: 2021-09-23 10:08:25
転載
2545 人が閲覧しました

この記事では、JavaScript の try catch ステートメントを理解し、try catch ステートメントの 2 つの機能を紹介します。

JS の try catch ステートメントとその 2 つの関数を詳細に分析します。

プログラムは上から下へ順番に実行されますが、同時にいくつかの制御文によって実行ルートを変更することができます。プログラムの実行経路は制御フローです。

js の制御ステートメントには、if、for、while、try catch などが含まれます。これらはすべてプログラムの方向を変更します。

プログラムはデータを操作しますが、プログラムの実行、つまり制御の流れに応じて変化するデータをデータフローと呼びます。

データフローは制御フローに依存するのは当然ですが、プログラム解析におけるデータフロー解析も、まず制御フロー解析が必要です。

たとえば、このコード:

const a = 1;
let b;

if (a === 1) {
    b = '1111';
} else {
    b = '2222';
}
ログイン後にコピー

a が 1 であるため、b = '1111'; になるまで実行されます。これが制御フローです。このコードは、プログラムの方向を分析し、デッド コードの削除などの最適化を行うために使用できます。

制御フローが実行されると、 b には値 2222 が割り当てられます。これはデータ フロー、つまり値を変更するプロセスであり、変数の値を分析するために使用できます。ある発言。

プログラムは、異なるデータに対して異なる処理を実行します。データにエラーがある場合、処理プログラムはそのデータを処理できず、エラーが報告され、その後の制御フローが中断されます。たとえば、データが空である、データ形式が間違っているなどです。現時点では、エラー処理は try catch (例外処理とも呼ばれます) を通じて実行する必要があります。

例外処理は 2 つの目的で行われます:

  • エラー ロジックの徹底的な処理を行うため。

たとえば、パラメータの解析でエラーが発生した場合は、catch にデフォルト値を割り当てます。このエラーが処理された後は、再度報告する必要はありません。この場合、try catch もロジックの一部であり、if else と同等です。

  • 報告されたエラーについて、よりシナリオに基づいた説明を提供します。

JS エラーは JS エンジンによってスローされます。たとえば、null オブジェクトのメソッドを呼び出すと TypeError が報告され、宣言されていない変数を使用すると ReferenceError が報告されます。特定のエラーはさまざまなシナリオで報告され、さまざまな意味を持ちます:

このオブジェクトがユーザーから入力された場合、ユーザー入力にエラーがあります。このオブジェクトがサーバーから取得された場合、はい、それは意味しますサーバーから返されたデータが正しくありません。異なるシナリオでは、同じエラーがより具体的な意味を持つため、キャッチを試みる必要があります。次に、シーン情報を含むエラー説明を含むカスタム エラーをスローします。

多くのライブラリとフレームワークは、これを適切に実行します。報告されるエラーには、特定のシナリオ情報と解決策さえも含まれています。一部はエラー番号で管理され、解決策を見つけるためにエラー番号で管理できます。これはカスタマイズされたエラー処理です。

ただし、ビジネス コードで報告される多くのエラーはこの方法では処理されず、ネイティブ エラーが直接報告されます。例外監視プラットフォームを使用して、グローバルにスローされるいくつかのエラーを収集します。これらのエラーは多くの場合、比較的基本的な情報です。エラーの場所とスタックは提供されますが、問題を特定するにはソース コードを確認する必要があります。

たとえば、オブジェクトが空であるというエラーが報告されますが、どのオブジェクトが空であるか、その理由、解決方法、および数値があるかどうかを知るにはどうすればよいですか。

さまざまなエラーを捕捉して、特定のシナリオに合わせていくつかのカスタム エラーをスローできれば、さらに良いでしょう。サードパーティのライブラリはこの点で良い仕事をしていますが、ビジネス コードの担当者でシナリオ ベースのカスタム エラーに注意を払う人はほとんどいません。

もちろん、フロントエンド ビジネス コードのユーザーはインターフェイスを通じてソフトウェアを使用しますが、実際には、さまざまなエラーに対していくつかの UI プロンプトを提供するだけで十分です。ライブラリコードは開発者向けであるため、さまざまなエラーをシナリオベースで記述し、エラーに番号を付けて解決策を提供する必要があります。

しかし、ビジネス コードもエラーをサードパーティ ライブラリ コードと同様に扱うべきだと思います。意味のないネイティブ エラーを報告する代わりに、トラブルシューティングと解決のために特定の意味を持つカスタム エラーをいくつか報告してください。問題ははるかに単純になります。

ただし、シナリオベースのカスタム エラーは問題のトラブルシューティングに役立ちますが、コードによって報告される可能性のあるエラーを確実に把握することに基づいている必要があります。報告するエラー メッセージが実際のエラー原因と異なる場合、トラブルシューティングが困難になるため、元のエラーを報告することをお勧めします。

概要

プログラムの実行プロセスは制御フローです。制御文の影響を受けて、実行中にデータが変更されます。データの変更はデータ フローと呼ばれます。制御フローとデータ フローは、プログラム分析でよく分析される 2 つの側面です。

エラーは制御フローを中断します。try catch を通じてエラーに対して何らかの処理を行う必要があります。

エラー処理には 2 つの目的があります。

1 つはバックアップ処理を実行することであり、これは if else と同等であり、エラーを再度報告する必要はありません。

1 つは、シナリオでネイティブ JS エラーを記述し、より具体的な情報を含むエラー オブジェクトを作成して、それをスローする方法です。

多くのライブラリはこれを非常にうまく行っており、エラー番号と解決策も示しています。しかし実際には、多くのビジネス コードは UI 上でユーザーにフィードバックを提供するだけで、スローされたエラーに対するシナリオベースのパッケージ化を提供しません。その結果、エラー監視プラットフォームによって収集されるエラーは比較的原始的なエラーとなり、トラブルシューティングのためにソース コードを表示する必要があります。ライブラリ コードのようなシナリオ ベースのエラー パッケージ化も行うことができれば、ほとんどの Javascript エンジニアが行っていない問題のカウントとトラブルシューティングがはるかに簡単になります。

プログラミング関連の知識について詳しくは、プログラミング ビデオをご覧ください。 !

以上がJS の try catch ステートメントとその 2 つの関数を詳細に分析します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:juejin.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!