English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Bei der Ausführung von JavaScript-Kodem können unerwartete Fehler auftreten.
Fehler können durch Programmierfehler verursacht werden, die durch Eingabefehler verursacht werden, und andere unerwartete Ereignisse.
Daher bietet JavaScript, um Fehler zu behandeln4Schlüsselwörter:
Die try-Anweisung ermöglicht es Ihnen, zu testen, ob ein Codeblock Fehler enthält
Das catch-Statement ermöglicht es Ihnen, Fehler zu verarbeiten
Das throw-Statement ermöglicht es Ihnen, benutzerdefinierte Fehler zu erstellen
Das finally-Statement ermöglicht es Ihnen, nach einem Versuch und einer Fehlerabfangung Code auszuführen, egal wie das Ergebnis ist
In diesem Beispiel schreiben wir "alert" als "aaalert", um absichtlich einen Fehler zu erzeugen:
try { aaalert("Hello world"); } document.getElementById("result").innerHTML = e.name + "<br>" + e.message; }Testen Sie heraus‹/›
Wenn ein Fehler auftritt, stoppt JavaScript normalerweise den Lauf und erstellt ein Objekt mit zwei Eigenschaften.Error-Objekt:name und message.
Eine try-Anweisung ermöglicht es Ihnen, einen Codeblock zu definieren, der bei der Ausführung auf Fehler überprüft wird.
Wenn ein Fehler im try-Block auftritt, ermöglicht Ihnen der catch-Ausdruck, einen Codeblock zu definieren, der ausgeführt wird.
JavaScript-Anweisungen try und catch erscheinen paarweise:
try { //try_statements-Versuchsausdrücke }catch(err){ //catch_statements-Fehlerbehandlungsanweisungen }
throw-Anweisung erzeugt benutzerdefinierte Ausnahmen.
throw-Anweisung ermöglicht es Ihnen, benutzerdefinierte Fehler zu erstellen. Technisch gesehen wird dies als "Ausnahme erzeugen ”。
Ausnahmen können JavaScript-String, Zahl, Boolescher Wert oder Objekt sein:
throw "Invalid"; // Erzeugen von Ausnahmen mit einem String-Wert throw 32; // Erzeugen von Ausnahmen mit dem Wert32der Ausnahme throw true; // Erzeugen von Ausnahmen mit dem Wert true
Wenn throw mit try und catch verwendet wird, kann der Programmfluss spezifiziert und eine benutzerdefinierte Fehlermeldung generiert werden.
In diesem Beispiel löst getRectArea() eine benutzerdefinierte Fehlermeldung aus, wenn irgendein nicht-numerischer Parameter übergeben wird:
function getRectArea(width, height) { if (isNaN(width) || isNaN(height)) { throw "Parameter is not a number!"; } } try { getRectArea(5, &39;Z'); } catch(err) { document.getElementById('para').innerHTML = err; }Testen Sie heraus‹/›
In diesem Beispiel wird eine Ausnahme (err) ausgelöst, wenn der Wert falsch ist. Das catch-Statement fängt die Ausnahme (err) ab und zeigt eine benutzerdefinierte Fehlermeldung an:
var x = document.querySelector("input").value; try { if(x == "") throw "is Empty"; if(isNaN(x)) throw "Not a Number"; if(x > 10) throw "too High"; if(x < 5)throw "too Low"; } catch(err) { document.getElementById("para").innerHTML = "Input " + err; }Testen Sie heraus‹/›
Diese finally-Anweisung ermöglicht es Ihnen, Code nach try und catch auszuführen, während catch unabhängig vom Ergebnis immer ausgeführt wird.
try { aaalert("Hello world"); } catch(err) { document.getElementById("result").innerHTML = err; } finally { document.getElementById("result").innerHTML += "<h3>Finally statement executed</h3>"; }Testen Sie heraus‹/›
catch und finally-Anweisungen sind optional, aber Sie müssen eine davon (oder beide) verwenden, während Sie das try-Statement verwenden:
try { aaalert("Hello world"); } finally { document.getElementById("result").innerHTML = "Finally statement executed"; }Testen Sie heraus‹/›
JavaScript hat ein eingebautes Error-Objekt, das Fehlerinformationen bereitstellt, wenn ein Fehler auftritt.
Das Fehlerobjekt bietet zwei nützliche Eigenschaften: name und message.
Die nachstehende Tabelle zeigt die Eigenschaften des Error-Objekts an:
Eigenschaft | Beschreibung |
---|---|
name | Setzt oder gibt den Fehlername zurück |
message | Setzt oder gibt die Fehlermeldung zurück |
Das Attribut error name kann sieben verschiedene Werte zurückgeben:
Typ | Beschreibung |
---|---|
EvalError | bedeutet, dass ein Fehler mit der globalen Funktion eval() verbunden ist |
InternalError | bedeutet, dass ein Fehler auftritt, wenn ein interner Fehler im JavaScript-Engine auftritt |
RangeError | bedeutet, dass ein Fehler auftritt, wenn eine numerische Variable oder ein Parameter außerhalb ihres gültigen Bereichs liegt |
ReferenceError | bedeutet, dass ein Fehler auftritt, wenn eine ungültige Referenz abgerufen wird |
SyntaxError | bedeutet, dass ein Syntaxfehler auftritt, wenn Code in eval() geparsed wird |
TypeError | bedeutet, dass ein Fehler auftritt, wenn eine Variable oder ein Parameter kein gültiger Typ ist |
URIError | bedeutet, dass ein Fehler auftritt, wenn ungültige Parameter an encodeURI() oder decodeURI() übergeben werden |
Das nächste Kapitel wird diese Fehlerarten detailliert vorstellen.
Wenn durcheval()Wird ein Fehler während der Ausführung einer Funktion ausgelöst, wird ein EvalError ausgelöst.
Allerdings wirft JavaScript diesen Fehler nicht mehr aus, behält aber diesen Objekt für die Rückwärtskompatibilität bei.
Neuere Versionen von JavaScript werfen keine Ausnahmen von Typ EvalError aus. Stattdessen wird SyntaxError verwendet.
Wenn Sie eine Zahl verwenden, die außerhalb des erlaubten Wertebereichs liegt, wird ein RangeError ausgelöst.
Zum Beispiel wird ein RangeError ausgelöst, wenn Sie ein Array mit einer negativen Länge erstellen:
try { var arr = new Array(-1); // würft einen RangeError } document.getElementById("result").innerHTML = err.name + "<br>" + err.message; }Testen Sie heraus‹/›
Wenn Sie versuchen, auf eine nicht vorhandene Variable oder ein Objekt zuzugreifen, wird in der Regel ein ReferenceError ausgelöst.
try { var x = 5 + y; // Ein Verweisfehler wird ausgelöst } document.getElementById("result").innerHTML = err.name + "<br>" + err.message; }Testen Sie heraus‹/›
Wenn Ihr JavaScript-Code irgendwelche Syntaxfehler enthält, wird ein SyntaxError bei der Ausführung ausgelöst.
try { eval("alert('Hello)"); // Fehlendes ' wird einen Fehler auslösen } document.getElementById("result").innerHTML = err.name + "<br>" + err.message; }Testen Sie heraus‹/›
Wird bei einem Wert, der nicht der erwarteten Typ ist, ein TypeError ausgelöst.
var num = 50; try { num.toUpperCase(); // Sie können keine Zahl in Großbuchstaben umwandeln } document.getElementById("result").innerHTML = err.name + "<br>" + err.message; }Testen Sie heraus‹/›
Bei ungültigen URI (Uniform Resource Identifier) wird ein URIError ausgelöst.
try { decodeURI("%"); // Sie können das Prozentsymbol nicht URI-dekodieren } document.getElementById("result").innerHTML = err.name + "<br>" + err.message; }Testen Sie heraus‹/›
Für eine vollständige Referenz zu den Eigenschaften und Methoden besuchen Sie bitte unsereJavaScript Fehler Referenz.
Der Referenzteil enthält alle Beschreibungen und Beispiele für Error-Attribute und -typen.