eins. Falsch kategorisiert
1. Syntaxfehler
Auch als Parsenfehler bezeichnet, treten beim Kompilieren in herkömmlichen Programmiersprachen auf und treten bei JavaScript bei der Interpretation auf. Diese Fehler werden direkt durch unerwartete Zeichen im Code verursacht und können dann nicht direkt kompiliert/interpretiert werden. z. B. einer Codezeile fehlt die Schließklammer, was zu einem Syntaxfehler führt. Wenn ein Syntaxfehler auftritt, kann der Code nicht ausgeführt werden. In JavaScript wird nur der Code im selben Thread durch Syntaxfehler beeinflusst. Der Code in anderen Threads und in anderen extern referenzierten Dateien kann weiter ausführen, wenn er nicht vom Code abhängt, der den Fehler enthält.
2. Laufzeitfehler
Auch als Ausnahme bezeichnet (Ausnahme, nach Kompilierung/Dolmetscher). Zu diesem Zeitpunkt liegt das Problem nicht in der Syntax des Codes, aber in einigen Fällen ist eine Operation, die versucht hat, abzuschließen, illegal. z.B.
window.openmyFile ();
Da die OpenMyFile () -Methode nicht vorhanden ist, gibt der Browser eine Ausnahme zurück. Ausnahmen beeinflussen nur den Thread, der auftritt, und andere JavaScript -Threads können weiterhin normal ausführen.
zwei. Handhabungsfehler
1. OneError Event -Handhabungsfunktion
Es ist der erste Mechanismus, der JavaScript bei der Behandlung von Fehlern unterstützt. Wenn auf der Seite eine Ausnahme auftritt, wird das Fehlerereignis auf das Fensterobjekt abgefeuert. Z.B.
Die Codekopie lautet wie folgt:
<html>
<kopf>
<title> onError Beispiel </title>
<script type = "text/javaScript">
window.onError = function () {
alarm ("Ein Fehler ist aufgetreten!");
}
</script>
</head>
<body onload = "function1 ()">
</body>
</html>
Im obigen Code wird der Versuch, eine nicht existierende Funktion aufzurufen, während die Seite geladen wird, eine Ausnahme erhöht. Eine Fehlermeldung, dass "Fehler aufgetreten" werden. Die Fehlermeldung des Browsers wird jedoch ebenfalls angezeigt. Wie verberge es im Browser? Geben Sie einfach eine echte Methode zurück.
Die Codekopie lautet wie folgt:
<script type = "text/javaScript">
window.onError = function () {
alarm ("Ein Fehler ist aufgetreten!");
zurückkehren;
}
</script>
1) Entfernen Sie die Fehlermeldung
Der OnError -Handler bietet drei Arten von Informationen, um die genaue Art des Fehlers zu bestimmen:
i) Fehlermeldung - Für einen bestimmten Fehler zeigt der Browser dieselben Informationen an.
ii) URL - in der Datei ein Fehler aufgetreten ist;
Zeilennummer - Die Zeilennummer, bei der der Fehler in der angegebenen URL aufgetreten ist.
Das folgende Beispiel für Zugriffsmethoden finden Sie unter:
Die Codekopie lautet wie folgt:
<script type = "text/javaScript">
window.onError = function (smessage, surl, schlank) {
alert ("Ein Fehler ist aufgetreten!/n" + smessage + "/Nurl:" + surl + "/nline nummer:" + schlank);
zurückkehren;
}
</script>
2) Bildladefehler
Das Fensterobjekt ist nicht das einzige Objekt, das die Funktion zur Bearbeitung von OnError -Ereignissen unterstützt, sondern auch die Bildobjekte unterstützt. Wenn ein Bild aufgrund der Nichtbelegung der Datei nicht erfolgreich geladen werden kann, wird das Fehlerereignis auf dem Bild ausgelöst. Schauen wir uns ein Beispiel an:
<img src = ”amigo.jpg” OneError = ”alert ('Ein Fehler beim Laden des Bildes')"/>
Das obige Beispiel zuordnet direkt die Funktion für ONERROR -Ereignishandler in HTML zu. Natürlich können Sie auch Ereignisverarbeitungsfunktionen über Skripte zuweisen. Bevor Sie die SRC -Eigenschaften des Bildes festlegen, müssen Sie warten, bis die Seite voll geladen ist. Der Code ist wie folgt:
Die Codekopie lautet wie folgt:
<html>
<kopf>
<title> Bildfehlertest </title>
<script type = "text/javaScript">
Funktion Handleload () {
document.images [0] .onError = function () {
ALERT ("Ein Fehler beim Laden des Bildes!");
};
document.images [0] .src = "amigo.jpg";
}
</script>
</head>
<Body Onload = "Handleload ()">
<img/>
<body>
</html>
HINWEIS: Im Gegensatz zum OnError -Ereignis -Handler -Funktion des Fensterobjekts verfügt das OnError -Ereignis des Bildes zusätzliche Informationsparameter.
3) Syntaxfehler verarbeiten
OnError kann auch Syntaxfehler verarbeiten. Eines ist jedoch zu beachten, dass der Ereignishandler der erste Code sein muss, der auf der Seite angezeigt wird. Wenn ein Syntaxfehler vor dem Einstellen des Ereignishandlers auftritt, ist der Ereignishandler nutzlos.
Hinweis: Syntaxfehler stoppen die Codeausführung vollständig.
Hinweis: Das Hauptproblem bei der Verwendung von OnError -Event -Handler ist, dass es Teil der BOM ist, sodass kein Standard sein Verhalten steuern kann. Daher verwenden verschiedene Browser dieses Ereignis, um Fehler erheblich zu behandeln. z.B. Wenn ein Fehlerereignis im IE auftritt, wird der normale Code weiterhin ausgeführt, alle Variablen und Daten werden beibehalten und können über die Funktion von Onerror -Ereignishandler zugegriffen werden. In Mozilla endet die normale Codeausführung und alle Variablen und Daten, bevor der Fehler auftritt, werden zerstört.
2. Versuchen Sie es mit der Erklärung
ECMPScript Third Edition führt die Versuch vor… Catch -Erklärung vor. Z.B.
Die Codekopie lautet wie folgt:
versuchen {
window.openFile1 ();
alarm ("erfolgreich als OpenFile1 -Methode bezeichnet");
} catch (Ausnahme) {
Alarm ("Ausnahme ist aufgetreten!");
} Endlich {
ALERT ("Versuchen Sie. Catch -Test endet!");
}
Im Gegensatz zu Java kann der ECMascript -Standard nur eine Fanganweisung im Versuch ... Catch -Anweisung haben, da JavaScript eine schwache Sprache ist und die spezifische Ausnahmeart in der Fangklausel nicht angeben kann. Unabhängig von der Art des Fehlers wird es von derselben Catch -Anweisung behandelt. Mozilla hat es jedoch erweitert und kann mehrere Fanganweisungen hinzufügen, die nicht empfohlen werden, diese Weise zu verwenden.
Schließlich verwendet, um Code einzubeziehen, die ausgeführt werden sollen, unabhängig davon, ob eine Ausnahme auftritt, was zum Schließen offener Links und zur Freigabe von Ressourcen nützlich ist.
1) verschachtelter Versuch… Catch -Erklärung
Schauen wir uns ein Beispiel an, dass der Code wie folgt ist:
Die Codekopie lautet wie folgt:
versuchen {
eval ("a ++ b");
} catch (oException) {
alarm ("Ein Fehler ist aufgetreten!");
versuchen {
var aError = new Array(100000000000000000000000000000000000000000000000000000000000000000000);
} catch (Ausnahme) {
ALERT ("Ein Fehler in der Fangklausel!");
}
} Endlich{
alarm ("abgeschlossen")
}
2) Fehlerobjekt
Wenn ein Fehler auftritt, hat JavaScript eine Fehlerbasisklasse zum Werfen. Es hat zwei Eigenschaften:
i) Name - Eine Zeichenfolge, die den falschen Typ darstellt
ii) Nachricht - Tatsächliche Fehlermeldung.
Der Name des Fehlerobjekts entspricht seiner Klasse und kann einer der folgenden Werte sein:
EvalError: Der Fehler tritt in der Funktion eval () auf;
RangeError: Der numerische Wert überschreitet den Bereich, den JavaScript darstellen kann.
ReferenzError: Es wurde illegale Referenz verwendet;
SyntaxError: Ein Syntaxfehler ist im Funktionsaufruf eval () aufgetreten, und andere Fehler wurden vom Browser gemeldet und konnten nicht durch Versuch verarbeitet werden. Fang;
TypeError: Der Typ der Variablen ist nicht das, was erwartet wird.
URIERROR: In der Funktion Encdeuri oder Decodeuri ist ein Fehler aufgetreten.
3) Bestimmen Sie den Fehlertyp
Die folgenden zwei Methoden können verwendet werden, um den Fehlertyp zu bestimmen. Die erste Methode basiert auf dem Namensattribut der Ausnahme wie folgt:
Die Codekopie lautet wie folgt:
versuchen {
eval ("a ++ b");
} catch (oException) {
if (oException.name = "syntaxError") {
Alert ("SyntaxError ist aufgetreten!");
} anders {
ALERT ("Anderer Fehler ist aufgetreten!");
}
}
Der Instanzoperator wird in der zweiten verwendet und der Code lautet wie folgt:
Die Codekopie lautet wie folgt:
versuchen {
eval ("a ++ b");
} catch (oException) {
if (oExceptioninstanz von syntaxError) {
Alert ("SyntaxError ist aufgetreten!");
} anders {
ALERT ("Anderer Fehler ist aufgetreten!");
}
}
4) Ausnahmwurfanweisung werfen
In der dritten Ausgabe von ECMascript wird es verwendet, um zielgerichtet Ausnahmen zu werfen. Das geworfene Fehlerobjekt kann eine Zeichenfolge, eine Zahl, ein boolescher Wert oder ein tatsächliches Objekt oder ein Fehlerobjekt sein (sein Konstruktor hat nur eine Funktion, dh eine Fehlermeldung). EG1. Neuen Fehler werfen ("Fehler ist aufgetreten!");
EG2.
Die Codekopie lautet wie folgt:
Funktion addtwonumber (a, b) {
if (Argumente.length <2) {
Neuen Fehler werfen ("Zwei Zahlen müssen eingegeben werden!");
}
}
versuchen {
result = addtwonumber (90);
} catch (oException) {
if (oExceptioninstanz von syntaxError) {
alert ("syntaxError:" + oException.message);
} else if (oException instanceof error) {
alert (oException.message);
}
}
Das obige ist alle in diesem Artikel beschriebenen Inhalte. Ich hoffe es kann dir gefallen.