Schauen wir uns zunächst ein Beispiel an
<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>
Hinweis:
Der Unterschied zwischen addEventListener und attachmentEvent ist der erste Parameter. Ersterer ist click und letzterer ist onclick
addEventListener wird im Elementbereich seines Elements ausgeführt
attachEvent wird im globalen Bereich (this=window) ausgeführt
Versuchen Sie...Catch-Anweisung
try...catch kann Ihren Code auf Fehler testen. Der Try-Abschnitt enthält den Code, der ausgeführt werden muss, während der Catch-Abschnitt den Code enthält, der ausgeführt wird, wenn ein Fehler auftritt.
Syntax:
try { //在此运行代码 } catch(err) { //在此处理错误 }
Hinweis: Verwenden Sie für try...catch Kleinbuchstaben. Großbuchstaben werden falsch geschrieben.
try...catch...finally Aussage
Implementieren Sie die Fehlerbehandlung für JScript.
try { tryStatements} catch(exception){ catchStatements} finally { finallyStatements}
============== ===========
Parameter
Erforderliche Option. Es kann zu einer falschen Aussage kommen.
Ausnahme
Erforderliche Option. beliebiger Variablenname. Der Initialisierungswert der Ausnahme ist der Wert des ausgelösten Fehlers.
CatchStatement
Optional. Anweisung, die Fehler behandelt, die im zugehörigen tryStatement auftreten.
finalStatements
Optional. Eine Anweisung, die bedingungslos ausgeführt wird, nachdem alle anderen Prozesse ausgeführt wurden.
Beschreibung
Die try...catch...finally-Anweisung bietet eine Möglichkeit, einige oder alle Fehler zu behandeln, die in einem bestimmten Codeblock auftreten können, während der Code weiterhin ausgeführt wird. Wenn ein Fehler auftritt, der vom Programmierer nicht behandelt wird, stellt JScript dem Benutzer nur seine normale Fehlermeldung zur Verfügung, als ob es keine Fehlerbehandlung gäbe.
Der Parameter
Beispiel
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); }
Verschachtelter Versuch ausgeführt...
Der verschachtelte Catch hat einen Fehler abgefangen
Endlich läuft Nested...
Der äußere Fang hat einen Fehler abgefangen, der erneut ausgelöst wurde
Außen läuft endlich
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"); }
Programmausführungsprozess
1. Da das Array array nicht erstellt wird, wenn array[0] verwendet wird, ist array ein leeres Objekt. Der Aufruf von array[0] im Programm generiert eine Objekt-ist-Null-Ausnahme
2. Die Anweisung „catch(err)“ erfasst diese Ausnahme und gibt den Fehlertyp über „err.name“ aus, und „err.message“ gibt die Fehlerdetails aus
3. „finally“ ähnelt „finally“ von Java und wird unabhängig davon ausgeführt, ob eine Ausnahme vorliegt oder nicht.
Fassen Sie nun die Informationen zusammen, die den sechs Werten von Error.name entsprechen:
1. EvalError: Die Verwendung von eval() stimmt nicht mit der Definition
überein
2. RangeError: Wert außerhalb der Grenzen
3. ReferenceError: Ungültiger oder nicht erkannter Referenzwert
4. SyntaxError: Ein Syntax-Parsing-Fehler ist aufgetreten
5. TypeError: Falscher Operandentyp
6. URIError: Unsachgemäße Verwendung der URI-Verarbeitungsfunktion