プログラム開発、プログラマはしばしば直面しなければならない例外(例外ハンドラ)というエラーイベントの発生に対応するためのコードを記述する方法です。例外処理コードを包括的になるように設計されている場合は、最終的には、ユーザに提示されるユーザーフレンドリーなインターフェイスです。それ以外の場合は、訪問者は不可解な現象の本当の「事故」を感じることができるようになります。
まず、例外は何である
配列インデックスは、JavaScriptのプログラムは、クロスボーダーの操作で行われたような、型が一致していないか、文法の誤りは、JavaScriptインタープリタが例外をトリガするとき。ECMAScriptのはほかに、我々はオブジェクトを作成し、情報を処理するカスタム例外をスローし、スローするようにErrorステートメントを使用することができ、エラーの6種類を定義します。
第二に、利点例外処理技術
、我々は、エラーイベントに対応する構造化された方法は、最終的に私たちはの主な機能の完了を書くことに集中することができ、その例外は、通常のスクリプトコード科学分離してコードを扱うので、発生した例外処理技術を使用してを達成することができますコアプログラム。
第三に、使用が最終的に例外処理を実行する...キャッチ...してみてください
JavaScriptで、我々は原因生成された例外またはスロー文の実装に、例外処理を実行するために、エラーが発生した後、すなわち、それを通して、例外をキャッチしようと...キャッチ... finally文を使用します。次のようにその基本的な構文は次のとおりです。
//ここでは例外的な文を生成することが可能である
}キャッチ(エラー){
//ここに文は例外処理を担当しているが
}ついに{
//ここにexit文は
}
上記のコードは、最初に実行されるブロック内の文をしてみてください。エラーが動作中で発生した場合、制御は、括弧例外のエラーパラメータを変数として渡され、前記キャッチブロックに位置ステートメントに転送されます。それ以外の場合は、文がスキップさcatchブロックは実行されません。ブロック文が終了、またはtryブロック文は、ブロック内で最後に文の最後の実行を終了するにエラーが発生していないで、エラーが発生したキャッチ両方。
例を見てみましょう:
{試みる
ますdocument.writeln( "--- tryブロック文を開始>")
ますdocument.writeln( "例外がまだ発生--->")
アラート(((「値を入力し、プロンプト: "" ")))
}キャッチ(ERR){
ますdocument.writeln("捕捉例外は、---> catchブロック文を開始する");
ますdocument.writeln("エラー名: "+ err.name +" - - > ");
ますdocument.writeln("エラーメッセージ: "+ + err.message" ---> ");
}最後に{
ますdocument.writeln(")」ステートメントをブロック最後に開始
}
</ SCRIPT>
:次のように私たちは、[OK]を、出力結果は、ABCいると入力し
、「tryブロック文を開始--->も例外が発生していない--->例外を捕捉するために、catchブロック文を開始--->エラー名:TypeError例外--->エラーメッセージ:「ABC」未定義--->「ステートメントをブロックし、最後に開始し
、「例外が発生していない出力をする場合、上記のルーチンはブロック文を試すために開始され、」値の入力を求めるポップアップ入力ダイアログボックスを、とき私たちは、「ABC」は、それが例外をトリガーし、不正な情報を入力し、そのtryブロック文の残りの部分はスキップされ、catchブロック文を開始します。catchブロック起動用パラメータ例外エラーオブジェクトとしてERR、2つのネームを有するメッセージ属性。最後に、ブロックfinally文を実行します。
私たちは、文がtryブロック終了したときにエラーが発生しないので、catchブロック文はスキップされ、ウィンドウが入力された値を表示する表示され、finallyブロック最終的には、文を実行していることがわかります。
四、最終的に変形...キャッチ...試みる
ください... catchは... finally文を試みる二つの変種のアプリケーションを持って...最後に...キャッチしたりしてみてください。
この最も一般的な構成をキャッチ...してみてください、その実行は次のようになります。例外がキャッチの実行完了後に発生していないか、例外がブロック文の文のtryブロックの実行後に発生した場合、制御はリアのtry ... catch文の構造全体に転送されます。次の例を考えてみます。
ますdocument.writeln( "Beginnng tryブロック")
ますdocument.writeln( "まだない例外")
//は構文エラーを作成
( "6 + * 3")
("例外なくtryブロックを完成"ますdocument.writelnを)
}キャッチ(ERR){
ますdocument.writeln( "例外キャッチ、catchブロックを実行する")
ますdocument.writeln( "エラー名:" + err.name)
ますdocument.writeln( "エラーメッセージ:" + err.message)
}
document.writelnを( "のtry-catch文の後に実行します")
構造は最終的に...しようとしている場合は、その例外が発生した場合、文のエラーをキャッチするために何のcatchブロックが存在しないため、最終的に文はfinallyブロックは実行されません。したがって、この構造は、実際には稀です。
V.の症状例外:エラーオブジェクト
JavaScriptでは、例外がエラーオブジェクトとして表示されます。Errorオブジェクトは、2つの属性があります。name属性は、例外のタイプを示す、メッセージ属性は意味の例外を表します。これらのプロパティの値によると、私たちのような、例外の処理方法を決めることができます。
{しようと
警告を((プロンプト( "JavaScriptがuateします:"、 "")))
}キャッチ(ERR){
場合(err.name == "にSyntaxError")の警告( "無効な表現")
他警告( "uateことができません")
}
}
ユーザーが入力したコード上のコンテンツは式で、次に表示されます。エラーのSyntaxErroeタイプは評価プロセスで発生した場合、それはユーザー「無効な表現」の情報に表示されます。それ以外の場合は、ユーザーが情報を取得します「uateできません」。
エラー:()を使用し、定義が矛盾している
例外RangeError:数値境界
にReferenceError:値の参照違法かどうかの識別
にSyntaxErrorを:パーサー・エラーが発生した
例外TypeErrorを:タイプオペランドエラー
URIError:URI不適切な取り扱い関数の使用
シックス・カスタム例外情報
6エラーの種類、上記のは、基本的には、スクリプトの実行時に発生するエラーをカバーしています。これらのタイプに加えて、我々はまた、次の構文を定義から例外のエラーコンストラクタタイプを使用することができます。
前記パラメータが定義された例外として新しい属性値をMSGメッセージを示します。同時に、我々はまた、エラーのサブタイプとして新しいオブジェクト型を作成することができます。
this.name = "MyError"
this.message = MSG
}
MyError.prototype =新しいエラー。
その後、我々は、カスタムエラーのサブクラスのインスタンスを作成することができます。
セブン、例外をトリガ
しますが、Errorオブジェクトを作成した後、あなたは、対応する例外をトリガするためにthrowステートメントを使用することができます。次のように投げ構文は次のとおりです。
スローerrObj
errObjがエラーまたはErrorオブジェクトのサブタイプでなければなりません。例外はtryブロックのコードは、制御がcatchブロックに直接転送された後にトリガされます。
tryブロックで次のコードは、例外、「おっと」、その後、制御はcatchブロックに転送され、設定するための例外情報をトリガ:
試み{
S = "1"
の新しいエラーを投げる( "おっと")
S + = "2"
}キャッチ(ERR){
S + = err.message
}
S + = "3"
警告(S)
迅速な実行を容易にするようなカスタムエラーの種類などの多くの例外をトリガするためにコードを記述する利点は、catchブロックを進み、次のネストされた例外エラーに説明する外側層に伝達されます。
八の入れ子の例外
はJavaScriptのサポートマルチレベルのネストされた例外。通常の状況下で、当社は、キャプチャおよび処理誤差の範囲内ハンドリングブロックの例外をキャッチし、再度例外をトリガするので、あなたは、外部のcatchブロックの例外処理でより詳細な更なる処理を行うことができます。のは、ネストされた例外の例を見てみましょう:
VaRの外側。
{試みる
ますdocument.writeln(「まだ、全く例外を外側のtryブロックを開始していません」)。
{しようとし
ますdocument.writeln( "まだ、何の例外を内側のtryブロックの始まりません");
//生成一个引用错误
ますdocument.writeln(undefinedVariable)
ますdocument.writeln( "例外なく仕上がりインナーtryブロック");
}キャッチ(内側){
//内部例外处理
ますdocument.writeln( "例外キャッチ、内側catchブロックを開始します")。
document.writelnを( "エラーの種類:" + inner.name)。
document.writelnを( "エラーメッセージ:" + inner.message)。
インナー投げます。
document.writelnを(」
document.writelnを(「最終的にはインナー実行すると、ブロック」);
}
ますdocument.writeln(「例外なく仕上がり外tryブロック」)。
}キャッチ(外側){
//外部例外处理
ますdocument.writeln( "例外キャッチ、外側のcatchブロックを開始します")。
document.writelnを( "エラーの種類:" + outer.name)。
document.writelnを( "エラーメッセージ:" + outer.message)。
}最後に{
ますdocument.writeln(「最後に、外側の実行ブロック」)。
}
出力は次のように実行された後:
内側のtryブロックを始めて、まだ例外なく
、内側のcatchブロックから始まる例外がキャッチ、
エラーの種類:のReferenceError
エラーメッセージ:undefinedVariableが定義されていない
finallyブロックの内側を実行
外側のcatchブロックの開始、キャッチした例外を
エラー種類:のReferenceError
エラーメッセージ:undefinedVariableが定義されていない
finallyブロックの外側を実行します
ネストされた例外処理は、私たちがよく段階的エラーで対処することができるという利点があり、スクリプトコード内で例外処理がエラーによって引き起こされる問題を解決するための責任を負うことができ、外部の例外は、情報や例外のフィードバックをユーザに提供する責任がありますログ記録。
IX結論
本論文では、JavaScript言語を説明し、実際に例外をスクリプトコードを含まないようにHTMLページ、Web開発者は、実用的な用途には良いことの把握と柔軟性を持つべきで、「例外」の非常に重要な特徴でありますそして、思いやり。
オリジナル住所ます。https://www.cnblogs.com/yourself/p/8981050.html