まず例を見てみましょう
<input id='b1' type='button' value='按钮'/> <script> window.onload=function(){ var oBtn=document.getElementById("b1"); function mto(){ alert("123"); }; try //非IE { oBtn.attachEvent("onclick",mto,false); } catch(e)//IE { oBtn.addEventListener("click",mto,false); } }; </script>
注:
addEventListener とattachEvent の違いは、最初のパラメータです。前者は click で、後者は onclick です。
addEventListener はその要素の要素スコープで実行されます
attachEvent はグローバル スコープ (this=window) で実行されます
Try...Catch ステートメント
try...catch はコード内のエラーをテストできます。 try セクションには実行する必要があるコードが含まれ、catch セクションにはエラーが発生したときに実行されるコードが含まれます。
構文:
try { //在此运行代码 } catch(err) { //在此处理错误 }
注: try...catch には小文字を使用してください。大文字は間違ってしまいます。
try...catch...finally ステートメント
JScript のエラー処理を実装します。
try { tryStatements} catch(exception){ catchStatements} finally { finallyStatements}
============== ===========
パラメータ
必須のオプション。誤った記述が発生する可能性があります。
例外
必須のオプション。任意の変数名。例外の初期化値は、スローされたエラーの値です。
catchStatement
オプション。関連する tryStatement で発生したエラーを処理するステートメント。
最終的にステートメント
オプション。他のすべてのプロセスが発生した後に無条件に実行されるステートメント。
説明
try...catch...finally ステートメントは、コードの実行を継続しながら、特定のコード ブロックで発生する可能性のある一部またはすべてのエラーを処理する方法を提供します。プログラマが処理できないエラーが発生した場合、JScript は、エラー処理がなかったかのように、通常のエラー メッセージをユーザーに提供するだけです。
例
try { print("Outer try running.."); try { print("Nested try running..."); throw "an error"; } catch(e) { print("Nested catch caught " + e); throw e + " re-thrown"; } finally { print("Nested finally is running..."); } } catch(e) { print("Outer catch caught " + e); } finally { print("Outer finally running"); } // Windows Script Host 作出该修改从而得出 WScript.Echo(s) function print(s){ document.write(s); }
ネストして実行してみます...
ネストされたキャッチがエラーをキャッチしました
ついに Nested が実行されました...
外側のキャッチがエラーをキャッチし、再スローされました
アウターがついに走り出す
var array = null; try { document.write(array[0]); } catch(err) { document.writeln("Error name: " + err.name + ""); document.writeln("Error message: " + err.message); } finally{ alert("object is null"); }
プログラム実行プロセス
1. array[0] を使用すると配列 array が作成されないため、プログラム内で array[0] を呼び出すと object is null 例外が生成されます。
2. catch(err) ステートメントはこの例外をキャプチャし、err.name を通じてエラーの種類を出力し、err.message はエラーの詳細を出力します。
3.finallyはjavaのfinallyと似ており、例外があるかどうかに関係なく実行されます。
次に、Error.name の 6 つの値に対応する情報を要約します:
1. EvalError: eval() の使用は定義
3. ReferenceError: 不正または認識できない参照値
4. SyntaxError: 構文解析エラーが発生しました
5. TypeError: オペランドの型が間違っています
6. URIError: URI 処理関数
の不適切な使用