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

推薦する

フロントエンドが習得すべき、複数列の等高レイアウトを実現するための CSS テクニック

1. はじめにページを作成しているときに、複数列のレイアウトに遭遇することがあります。各列の内容が異...

写真とテキストによる MySQL と sqlyog のインストール チュートリアル

1. MySQL 1.1 MySQLのインストールmysql-5.5.27-winx64 ダウンロー...

Vueは下部のポップアップウィンドウで複数選択を実装します

この記事の例では、下部のポップアップウィンドウで複数選択を実装するためのVueの具体的なコードを共有...

Nuxt.jsプロジェクトのDockerデプロイメントの実装

Docker 公式ドキュメント: https://docs.docker.com/ Docker は...

Vueで背景色と透明度を設定する方法

背景色と透明度の設定上記のように、最初の画像の場合は、灰色の背景と左上隅に白い「カバー」という文字を...

JSは写真の自動再生効果を実現します

この記事では、写真の自動再生効果を実現するためのJSの具体的なコードを参考までに紹介します。具体的な...

win10 で mysql8.0.23 をインストールし、「サービスが制御機能に応答しません」という問題を解決する方法

Windows10にmysqlをインストールする1. 公式サイトからMySQLをダウンロードするウェ...

CSS テキスト配置実装コード

フォームを作成するときに、名前、携帯電話番号、出生地などの 2 つのフィールドを揃える状況に遭遇する...

MySQL カーソル関数と使用法

目次意味カーソルの役割カーソルの使用カーソルの宣言カーソルを開くカーソルデータのトラバースカーソルを...

Ubuntu での mysql のインストールと使用 (一般版)

Ubuntu のバージョンに関係なく、MySQL データベースのインストールは基本的に同じです。具...

Linux でジャンプ サーバー経由でリモート サーバーに接続し、ファイルを転送する方法

最近、Linux ホストに環境を展開する際に多くの問題に遭遇しました。最初の問題は、ジャンプ サーバ...

CSSスタイルのカスケーディングルールの詳細な説明

CSS スタイル ルール構文スタイルは、CSS の基本単位です。各スタイル ルールは、セレクターと宣...

面接では、select...for update がテーブルをロックするのか、それとも行をロックするのか尋ねられました。

目次確認する:例の検証と組み合わせるselect クエリ ステートメントはロックされませんが、sel...

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

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

Power Shell に vim 実装コード例を追加する方法

1. Vimの公式ウェブサイトにアクセスして、オペレーティングシステムに適した実行ファイルをダウンロ...