1つ。誤って分類されています
1。構文エラー
解析エラーとも呼ばれ、従来のプログラミング言語でコンパイルするときに発生し、解釈時にJavaScriptで発生します。これらのエラーは、コード内の予期しない文字によって直接引き起こされるため、直接コンパイル/解釈することはできません。たとえば、コードの行にクロージングブラケットがないため、構文エラーが発生します。構文エラーが発生した場合、コードを実行できません。 JavaScriptでは、同じスレッドのコードのみが構文エラーの影響を受けます。他のスレッドおよび他の外部で参照されるファイルのコードは、エラーを含むコードに依存しない場合、引き続き実行できます。
2。ランタイムエラー
例外としても知られています(例外、コンパイル/インタープリター後)。この時点で、問題はコードの構文ではありませんが、場合によっては、完了しようとする操作が違法です。例えば。
window.openmyfile();
OpenMyFile()メソッドは存在しないため、ブラウザは例外を返します。例外は、発生するスレッドにのみ影響し、他のJavaScriptスレッドは普通に実行され続けることができます。
二。取り扱いエラー
1. OneErrorイベント処理機能
これは、JavaScriptがエラーの処理を支援する最初のメカニズムです。ページで例外が発生すると、エラーイベントがウィンドウオブジェクトで起動されます。例えば。
コードコピーは次のとおりです。
<html>
<head>
<title> onerror例</title>
<script type = "text/javascript">
window.onerror = function(){
アラート(「エラーが発生しました!」);
}
</script>
</head>
<body onload = "function1()">
</body>
</html>
上記のコードでは、ページが読み込まれている間に存在しない関数を呼び出そうとすると、例外が発生します。 「エラーが発生した」というエラーメッセージが表示されます。ただし、ブラウザのエラーメッセージも表示されます。ブラウザで非表示にする方法は?真の方法を返すだけです。
コードコピーは次のとおりです。
<script type = "text/javascript">
window.onerror = function(){
アラート(「エラーが発生しました!」);
trueを返します。
}
</script>
1)エラーメッセージを削除します
Onerrorハンドラーは、エラーの正確な性質を決定するために3種類の情報を提供します。
i)エラーメッセージ - 特定のエラーの場合、ブラウザは同じ情報を表示します。
ii)URL-ファイルが発生した。
行番号 - 指定されたURLでエラーが発生した行番号。
アクセス方法については、次の例を参照してください。
コードコピーは次のとおりです。
<script type = "text/javascript">
window.onerror = function(smessage、surl、sline){
alert( "エラーが発生しました!/n" + smessage + "/nurl:" + surl + "/nline番号:" + sline);
trueを返します。
}
</script>
2)画像読み込みエラー
Windowオブジェクトは、Onerrorイベント処理機能をサポートする唯一のオブジェクトではなく、画像オブジェクトのサポートも提供します。ファイルが存在しないために画像を正常にロードできない場合、エラーイベントが画像にトリガーされます。例を見てみましょう:
<img src =” amigo.jpg” oneerror =” alert( '画像の読み込み中にエラーが発生しました') "/>
上記の例では、HTMLのOnerrorイベントハンドラー機能を直接割り当てます。もちろん、スクリプトを介してイベント処理機能を割り当てることもできます。画像のSRC特性を設定する前に、ページが完全にロードされるのを待つ必要があります。コードは次のとおりです。
コードコピーは次のとおりです。
<html>
<head>
<title>画像エラーテスト</title>
<script type = "text/javascript">
function handleload(){
document.images [0] .onerror = function(){
アラート(「画像の読み込み中にエラーが発生しました!」);
};
document.images [0] .src = "amigo.jpg";
}
</script>
</head>
<body onload = "handleload()">
<img/>
<body>
</html>
注:WindowオブジェクトのOnerrorイベントハンドラー関数とは異なり、画像のOnerrorイベントには追加の情報パラメーターがあります。
3)構文エラーを処理します
Onerrorは構文エラーを処理することもできます。ただし、イベントハンドラーを設定する前に構文エラーが発生した場合、イベントハンドラーは役に立たないため、イベントハンドラーがページに表示される最初のコードでなければならないことに注意する必要があります。
注:構文エラーは、コードの実行を完全に停止します。
注:Onerrorイベントハンドラーの使用に関する主な問題は、BOMの一部であるため、標準がその動作を制御できないことです。したがって、異なるブラウザはこのイベントを使用してエラーを大幅に処理します。例えば。 IEでエラーイベントが発生すると、通常のコードが実行され続け、すべての変数とデータが保持され、Onerrorイベントハンドラー関数を介してアクセスできます。 Mozillaでは、通常のコード実行が終了し、エラーが発生する前のすべての変数とデータが破壊されます。
2。試してみてください…声明をキャッチしてください
ecmpscript第3版は、Try…Catchステートメントを紹介します。例えば。
コードコピーは次のとおりです。
試す {
window.openfile1();
alert( "openfile1メソッドと呼ばれる正常に");
} catch(例外){
alert( "例外が発生しました!");
} ついに {
alert( "try..catch Test end!");
}
Javaとは異なり、ECMAScriptの標準は、JavaScriptは弱いタイプの言語であり、Catch句で特定のタイプの例外を指定できないため、Try ... Catchステートメントに1つのキャッチステートメントのみを持つことができます。エラーの種類に関係なく、同じCatchステートメントによって処理されます。ただし、Mozillaはそれを拡張しており、複数のキャッチステートメントを追加できますが、この方法を使用することはお勧めしません。
最終的に、例外が発生するかどうかに関係なく実行されるコードを含めるために使用されます。これは、オープンリンクを閉じてリソースを解放するのに役立ちます。
1)ネストされた試行…catchステートメント
CACT条項のエラー問題に対処するために使用されます。例を見てみましょう。コードは次のとおりです。
コードコピーは次のとおりです。
試す {
eval( "a ++ b");
} catch(oexception){
アラート(「エラーが発生しました!」);
試す {
var aerror = new Array(10000000000000000000000000000000000000000000000000000000000000000000000);
} catch(例外){
alert( "Catch句でエラーが発生しました!");
}
} ついに{
アラート(「完了」)
}
2)エラーオブジェクト
エラーが発生すると、JavaScriptにはスロー用のエラーベースクラスがあります。 2つの特徴があります。
i)名前 - 間違ったタイプを表す文字列
ii)メッセージ - 実際のエラーメッセージ。
エラーオブジェクトの名前はそのクラスに対応し、次の値のいずれかになります。
EvalError:エラーはeval()関数で発生します。
rasinError:数値は、JavaScriptが表すことができる範囲を超えています。
参照エラー:違法な参照が使用されました。
SyntaxError:eval()関数呼び出しで構文エラーが発生し、他のますますエラーがブラウザによって報告され、try ... catchで処理できませんでした。
TypeReror:変数のタイプは、必要と予想されるものではありません。
urierror:ecodeuriまたはdecodeuri関数でエラーが発生しました。
3)エラータイプを決定します
次の2つの方法を使用して、エラータイプを決定できます。最初の方法は、次のように、例外の名前属性に基づいています。
コードコピーは次のとおりです。
試す {
eval( "a ++ b");
} catch(oexception){
if(oexception.name = "syntaxerror"){
alert( "syntaxerrorが発生しました!");
} それ以外 {
alert( "その他のエラーが発生しました!");
}
}
of intance of演算子は2番目で使用され、コードは次のとおりです。
コードコピーは次のとおりです。
試す {
eval( "a ++ b");
} catch(oexception){
if(syntaxerrorのoexceptionインスタンス){
alert( "syntaxerrorが発生しました!");
} それ以外 {
alert( "その他のエラーが発生しました!");
}
}
4)例外ステートメントをスローします
ECMAScriptの第3版では、例外を意図的にスローするために使用されます。スローされたエラーオブジェクトは、文字列、数字、ブール値、または実際のオブジェクト、またはエラーオブジェクトです(そのコンストラクターには1つの関数、つまりエラーメッセージのみです)。 EG1。新しいエラーをスローします( "エラーが発生しました!");
EG2。
コードコピーは次のとおりです。
関数addtwonumber(a、b){
if(arguments.length <2){
新しいエラーをスローします(「2つの数字を渡す必要があります!」);
}
}
試す {
result = addtwonumber(90);
} catch(oexception){
if(syntaxerrorのoexceptionインスタンス){
alert( "syntaxerror:" + oexception.message);
} else if(oexception instanceof error){
アラート(oexception.message);
}
}
上記は、この記事で説明されているすべてのコンテンツです。気に入っていただければ幸いです。