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 が機能しない理由の詳細

推薦する

Linuxターミナルでの一般的なMySQL操作コマンドの詳細な説明

仕える: # chkconfig --list すべてのシステム サービスを一覧表示します # ch...

MySql テーブル内の行を削除する実用的な方法

まず、どのフィールドまたはフィールドの組み合わせがデータ行を一意に識別できるかを決定する必要がありま...

MySQLの共有ロックと排他ロックの使用例の分析

この記事では、例を使用して MySQL の共有ロックと排他ロックの使用方法を説明します。ご参考までに...

Postman 自動インターフェーステストの実践

目次背景説明GETリクエストの作成事前リクエストスクリプトで署名を作成するスクリプトは環境変数に書き...

Vue フロントエンドと Django バックエンドを使用して、一定期間内のデータをクエリする方法

序文開発プロセスでは、すべてのデータではなく特定の期間内のデータをクエリするなど、クエリのフィルタリ...

MySQLデータベース最適化技術の簡単な紹介

成熟したデータベース アーキテクチャは、最初から高可用性、高スケーラビリティなどの機能を備えて設計さ...

JavaScript と JQuery フレームワークの基本チュートリアル

目次1. JS オブジェクトDOM –1、機能–2、テスト3. jQuery –1. 概要–2、使用...

インデックスは MySQL クエリ条件で使用されますか?

雇用主から MySQL クエリ条件でインデックスが使用されるかどうかを尋ねられた場合、どのように答え...

Mysql 8.0.18 ハッシュ結合テスト (推奨)

ハッシュ結合ハッシュ結合は実行にインデックスを必要とせず、ほとんどの場合、現在のブロックネストループ...

React のグローバル状態管理の 3 つの基本メカニズムの調査

目次序文小道具コンテクスト州要約する序文最新のフロントエンド フレームワークはすべて、コンポーネント...

MySQL のソート関数 field() の詳細な例

序文私たちの日常の開発プロセスでは、ソートが頻繁に使用され、そのような要求がある場合もあります。たと...

ハイパーリンクに関するいくつかの質問

<br />ポテトチップスパーティーのこのエピソードに参加して、何人かの友達に会えてとて...

JavaScriptのvar let constの違いは何ですか?

目次1. 繰り返し宣言1.1 変数1.2 しましょう1.3 定数2. 可変プロモーション2.1 変数...

JavaScript によるダイナミッククリスマスツリーの詳細な説明

目次1. CSS のみを使用して作成したアニメーションのクリスマスツリー2. CSS のみを使用して...

テーブルタグ(テーブル)詳細

<br />テーブルは、昔から誰もが使ってきたタグで、今も使われています。しかし、現在の...