プログラムの実行中にエラーは必ず発生し、エラー後の実行結果は正しくないことが多いため、実行中にエラーが発生したプログラムは通常強制終了されます。実行時エラーは総称して例外と呼ばれ、エラーが発生したときに処理する機会を得るために、JavaScript には例外処理ステートメントが用意されています。 try-catch、try-catch-finally、throw が含まれます。
try-catch ステートメント
try{ tryStatements } catch(exception){ catchStatements }
パラメータの説明:
tryStatements: 必須。エラーが発生する可能性のある一連のステートメント。
例外: 必須。エラーが発生したときにエラー オブジェクトを参照するために使用される変数名。
catchStatements: オプション。エラー処理ステートメント。tryStatements で発生したエラーを処理するために使用されます。
コーディングの際、通常、エラーが発生する可能性のあるステートメントは try ブロックの中括弧内に記述され、エラーは後続の catch ブロックで処理されます。エラー情報はエラー オブジェクト (Error オブジェクト) に含まれており、例外参照を通じてアクセスできます。エラーオブジェクトのエラー情報を基に対処方法を決定してください。
<script type="text/javascript"> try{ var n = error; //人为引发一个错误,error未定义就使用 } catch(e){ alert((e.number&0xFFFF) + "号错误:" + e.description); //错误处理:仅输出错误信息 } </script>
このコード スニペットは、try-catch 構造を使用してプログラムの実行時エラーを処理し、4 行目で人為的にエラーを発生させます。 6 ~ 9 行目の catch ブロックはエラーをキャッチして処理します。
ヒント: JavaScript エラーは実行時エラーと構文エラーです。構文エラーはコンパイル段階で検出されますが、エラー処理ステートメントは実行時エラーのみを処理できます。
try-catch-finally ステートメント
try{ tryStatements; } catch( exception ){ handleStatements; } finally{ fianllyStatements; }
パラメータの説明:
tryStatements: 必須、例外を引き起こす可能性のあるステートメント。
handleStatements: オプションの例外処理ステートメント。
fianllyStatements: オプション。他のプロシージャの実行後に無条件に実行されるステートメント。
エラーが発生しない場合でも、finally ブロック内のステートメントは最後に実行され、通常はリソース クリーンアップ コードがここに配置されます。
Apple 名を含む配列を走査しているときに例外が人為的にスローされます。
<script type="text/javascript"> try{ var fruit = new Array("鸭梨","苹果","葡萄","李子"); for( n=0;n<fruit.length;m++) { document.write(fruit[n] + ""); } } catch( e ) { alert( (e.number&0xFFFF) + "号错误:" + e.description ); } finally{ fruit = null; alert("fruit="+fruit+"已经断开fruit数组的引用!"); } </script>
このコード スニペットの 5 行目では、未定義の変数 m が使用され、人為的に例外がトリガーされます。 11 行目から 13 行目は例外をキャッチして処理します。 14 行目から 18 行目のfinally ブロックは、フルーツ配列によって占有されているリソースがリークされないように、無条件で実行されます。
スローステートメント
複数の例外処理ステートメントをネストできます。複数の構造がネストされている場合、内部層の try-catch ステートメントは、例外自体を処理するつもりがない場合に例外をスローする可能性があります。親の try-catch ステートメントは、子によってスローされた例外を受け取ることができ、スロー操作には throw ステートメントが使用されます。
式をスローします;
式の値はエラー メッセージ オブジェクトとして渡され、catch ステートメントによってキャプチャされます。 throw ステートメントは、例外をスローする場所であればどこでも使用できます。
通常、0 を除数として使用することはできないため、例外を定義して、除数が 0 の場合にそれをスローできます。
<script> try{ var dividend = 100; //被除数 var parts = 0; //除数 if( parts == 0){ //如果除数为0则抛出异常 throw "Error:parts is zero"; //抛出异常 } alert("每人" + dividend/parts + "份"); //输出提示信息 } catch(e){ //此处将捕获try块中抛出的异常 alert(e); //用对话框输出错误对象的信息 } </script>
以上がこの記事の全内容です。皆さんに気に入っていただければ幸いです。