JavaScript 高度なカスタム例外

JavaScript 高度なカスタム例外

序文:

実際のプログラミングでは、例外(コードエラー)をスローすることは最も普通のことですが、例外の処理方法は人によって異なります。例外に遭遇すると、通常は例外を解決したり、何らかの方法で例外を隠したりしますが、 JavaScriptでは、例外に遭遇したときにプログラムを正しく実行できるように、例外処理メカニズムの完全なセットが用意されています。したがって、実際のアプリケーションにおける例外処理の重要性は疑う余地がありません。完全な Web アプリケーションには、完全な例外処理メカニズムが必要です。

この記事ではJavaScript処理を紹介します

1. コンセプト

1.1 エラーと例外とは何ですか?

いわゆるエラーは、プログラミング プロセスにおいてプログラムが正常に実行されなくなる状態であり、例外とも呼ばれます。

JavaScriptでは、すべての例外はErrorオブジェクトです。例外が発生すると、エラーの説明を含むErrorオブジェクトがスローされます。

JavaScriptが提供する例外処理ステートメントを使用すると、発生するエラーを構造化された方法でキャプチャし、例外処理コードをコアビジネス コードから分離できます。

1.2 異常の分類

実際の開発では、例外は主に次の 3 種類に分けられます。

  • 論理エラー:論理エラーは、追跡するのが最も難しいタイプのエラーです。これらのエラーは、プログラム操作のロジックのエラーが原因で発生し、スクリプト プログラムが期待どおりの結果を得られなくなります。
  • JavaScript 固有のエラー:これらは、 JavaScript構文エラー、コード参照エラー、型エラーなど、最も一般的なタイプのエラーです。JavaScript エンジンは、これらのエラーを自動的にトリガーします。
  • 開発者によって発生したエラー:これらは通常、開発者が独自のニーズを満たすために定義したエラーです。

2. 例外処理

2.1try...catch ステートメント

try...catch ステートメントは、JavaScript で例外を処理する標準的な方法です。構文構造は次のとおりです。

試す {
     // テスト用のコードブロック }
 キャッチ(エラー) {
     // エラーを処理するコードブロック } 

パラメータ:

  • try : ステートメントを使用すると、実行中にエラーを検出するコード ブロックを定義できます。
  • catch : ステートメントを使用すると、try ブロックでエラーが発生した場合に実行されるコード ブロックを定義できます。
  • err : テスト コード ブロック内のエラーに対応する型の Error オブジェクトを表す識別子。

サンプルコードは次のとおりです。

試す {
  // エラーがあるかどうかをテストするために使用されるコードブロック console.log(v) // この時点では v は定義されていないため、例外がスローされます } catch (error) {
  // 例外をスローすると、このコード ブロックが実行されます console.log('上記のコードにはエラーがあります')
}

**try** と **catch** ステートメントがペアで表示されることに注意する価値がある。

2.2 finally文

finallyステートメントは終了ブロックとも呼ばれます。このステートメント ブロックは、結果がエラーであるかどうかに関係なく、 trycatchステートメントが完了した後に実行されます。

構文構造は次のとおりです。

試す {
     // テスト用のコードブロック }
 キャッチ(エラー) {
     // エラーを処理するコードブロック }  
ついに {
     // try catch の結果に関係なく実行されるコード ブロック}

サンプルコードは次のとおりです。

// 変数v
試す {
  // エラーがあるかどうかをテストするために使用されるコードブロック console.log(v) // この時点では v は定義されていないため、例外がスローされます } catch (error) {
  // 例外をスローすると、このコード ブロックが実行されます console.log('上記のコードにはエラーがあります')
ついに
  console.log('私は処刑されなければならない')
}

2.3throw文

throw****ステートメントは、ユーザー定義の例外をスローするために使用されます。この例外は任意のデータ型にすることができます。 throwステートメントが実行されると、現在の実行が停止されます。catch catchがある場合はcatchブロックが実行され、ない場合はループから抜け出します。

構文の形式は次のとおりです。

スロー式;


expression : スローされる式

例外をスローするには、 throwステートメントを使用します。例外をスローする場合、 expression例外の内容を指定します。

サンプルコードは次のとおりです。

// "error" をスローします // error を出力します false をスローします // false を出力します


もちろん、 throw後にオブジェクトが続くこともできます。

3. エラーオブジェクト

エラー オブジェクトは、Error コンストラクターを通じて作成できます。実行時エラーが発生すると、 Errorのインスタンスがスローされます。一般的に、 Errorタイプのエラーはまれであり、そのほとんどは他のエラー タイプですが、他のエラー タイプは Error から継承されます。

Error オブジェクトは主に、ユーザー定義の例外の基本オブジェクトとして使用されます。

Error オブジェクトに加えて、JavaScript では次の定義済みのエラー タイプも提供されます。

エラー名説明する
評価エラーeval() 関数でエラーが発生しました。
範囲エラー範囲外エラーが発生しました
参照エラー不正な参照が発生しました
構文エラー構文エラーが発生しました
タイプエラー型エラーが発生しました
URIエラーencodeURI() でエラーが発生しました

エラーには主に 2 つのプロパティがあります。

財産説明する
名前エラー名を設定または返す
メッセージエラーメッセージ(文字列)を設定または返します

Error オブジェクトのインスタンスを作成するための構文形式は次のとおりです。

新しいエラー([メッセージ])

パラメータ:

message : オプション、エラーメッセージの説明

他の定義済み型の作成構文はエラーと同じです。

3.1 カスタム例外タイプ

JavaScriptが提供する例外タイプが満足できない場合は、独自の例外タイプをカスタマイズできます。このカスタム例外タイプは通常、Error 例外タイプを継承し、 instanceofキーワードを使用して例外タイプを示すことができます。

まず、カスタム例外タイプ用にNode.jsで提供されるプロパティとメソッドを見てみましょう。

以下のように表示されます。

error.stack : プロパティ: 文字列の最初の行が<error class name>: <error message>,としてフォーマットされ、一連のスタック フレーム (各行は "at " で始まる) が含まれる文字列を返します。各フレームは、エラーの発生原因となったコード内の呼び出しポイントを記述します。
Error.captureStackTrace(targetObject[, constructorOpt])メソッド: targetObjectオブジェクトを表し、constructorOpt はオブジェクトのコンストラクターを表します。目的: targetObjectに.stack属性を作成する

サンプルコードは次のとおりです。

関数 MyError(メッセージ) {
  this.message = メッセージ
  this.name = 'MyError'
  /*
   * Error.captureStackTrace(targetObject[, コンストラクターOpt])
   * パラメーター targetObject -> オブジェクトを表します * パラメーターconstructorOpt -> オブジェクトのコンストラクターを表します * targetObject に .stack プロパティを作成し、呼び出しにより Error.captureStackTrace() が呼び出された場所の文字列が返されます。
   */
  Error.captureStackTrace(これ、MyError)
}

MyError.prototype = 新しいError()
MyError.prototype.constructor = MyError

// * node.js 環境では、new Error は直接例外をスローします。これは node.js 環境には適用されません。 // function MyError(message) {
// this.name = 'MyError';
// this.message = message || 'デフォルトメッセージ';
// this.stack = (新しい Error()).stack;
// }
// MyError.prototype = Object.create(Error.prototype);
// MyError.prototype.constructor = MyError;

試す {
  新しいMyError('wrong')をスローします
} キャッチ (e) {
  コンソール.log(e)
}

結論:

JavaScript での例外処理は、実際の開発では通常、次の 2 つのことだけを行います。

  • 例外をプロンプトメッセージに変更する
  • エラー情報を表示するには、例外を例外ログに出力します。

JavaScript の高度なカスタム例外に関するこの記事はこれで終わりです。より関連性の高い JavaScript カスタム例外コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Springboot2.0はカスタム例外を処理し、jsonを返します
  • Java 構築メソッド super とカスタム例外スローコレクションの詳細な使用方法

<<:  MYSQL メタデータ ロック (MDL ロック) の理論とロック タイプ テスト

>>:  CSS 属性値 clear:right が機能しない理由の詳細

推薦する

React Fiberの仕組みの詳細な説明

目次React Fiberとは何ですか?なぜReact Fiberなのか? React Fiberは...

CSS3実践手法のまとめ(推奨)

1. 丸い境界線: CSSコードコンテンツをクリップボードにコピー境界線の半径: 4px ; 2....

HTML における src と href の違いについての簡単な説明

簡単に言うと、srcは「このリソースをロードしたい」という意味で、hrefは「このリソースに関連付け...

MySQL のデータの偶発的な削除の解決策と kill ステートメントの原則

mysql が誤ってデータを削除しました削除ステートメントを使用して誤ってデータ行を削除する誤ってデ...

Vue+elementuiはドロップダウンテーブルの複数選択と検索機能を実現します

この記事では、ドロップダウンテーブルの複数選択と検索を実現するためのvue+elementuiの具体...

MySQL ロックブロッキングの詳細な分析

日常のメンテナンスでは、スレッドがブロックされることが多く、データベースの応答が非常に遅くなります。...

MySQLのビューの詳細な説明

ビュー: MySQL のビューはテーブルと多くの類似点があります。ビューも複数のフィールドと複数のレ...

TypeScript をインストール、使用、自動コンパイルする方法に関するチュートリアル

1. TypeScriptの紹介前回の記事ではTypeScriptのインストール、使い方、自動コンパ...

フラットスタイルを使用してウェブサイトをデザインする方法

フラットなウェブサイト構造の本質はシンプルさです。コンテンツの重要なポイントを強調し、ページの装飾効...

Ubuntu で XFS ファイルシステム用の LVM を作成する方法

序文lvm (論理ボリューム マネージャー) 論理ボリューム管理は、Linux システムのニーズを満...

offsetWidth、clientWidth、scrollWidth、scrollTop、scrollLeft などのプロパティの図。

注 1: 上の画像の背景全体がこの Web ページのフルサイズであり、中央の小さなボックスがブラウザ...

JS でモバイルのインタラクティブ エクスペリエンスを向上させる方法

目次1. 即時フィードバック1.1 ボタンからの即時フィードバック1.2 継続的なフィードバック1....

1 時間で MySQL データベースを学ぶ (Zhang Guo)

目次1. データベースの概要1.1 開発の歴史2. MySQL の紹介2.1. MySQLの概要2....

Linuxのアラーム機能の例の説明

Linuxアラーム機能の紹介上記のコード: #include <stdio.h> #in...

jsドラッグ効果の原理と実装

ドラッグ機能は主に、ドラッグによる並べ替え、ポップアップ ボックスのドラッグと移動など、ユーザーがカ...