English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JavaScript Grundtutorials

JavaScript Objekt

JavaScript Funktion

JS HTML DOM

JS Browser BOM

AJAX Grundtutorials

JavaScript Referenzhandbuch

Fehlerbehandlung in JavaScript

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.

JavaScript try ... catch-Anweisung

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
}

JavaScript throw-Anweisung

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‹/›

Eingabevalidierungbeispiel

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‹/›

JavaScript endgültige Anweisung

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-Fehlerobjekt

JavaScript hat ein eingebautes Error-Objekt, das Fehlerinformationen bereitstellt, wenn ein Fehler auftritt.

Das Fehlerobjekt bietet zwei nützliche Eigenschaften: name und message.

Eigenschaften des Fehlerobjekts

Die nachstehende Tabelle zeigt die Eigenschaften des Error-Objekts an:

EigenschaftBeschreibung
nameSetzt oder gibt den Fehlername zurück
messageSetzt oder gibt die Fehlermeldung zurück

Fehlerart

Das Attribut error name kann sieben verschiedene Werte zurückgeben:

TypBeschreibung
EvalErrorbedeutet, dass ein Fehler mit der globalen Funktion eval() verbunden ist
InternalErrorbedeutet, dass ein Fehler auftritt, wenn ein interner Fehler im JavaScript-Engine auftritt
RangeErrorbedeutet, dass ein Fehler auftritt, wenn eine numerische Variable oder ein Parameter außerhalb ihres gültigen Bereichs liegt
ReferenceErrorbedeutet, dass ein Fehler auftritt, wenn eine ungültige Referenz abgerufen wird
SyntaxErrorbedeutet, dass ein Syntaxfehler auftritt, wenn Code in eval() geparsed wird
TypeErrorbedeutet, dass ein Fehler auftritt, wenn eine Variable oder ein Parameter kein gültiger Typ ist
URIErrorbedeutet, dass ein Fehler auftritt, wenn ungültige Parameter an encodeURI() oder decodeURI() übergeben werden

Das nächste Kapitel wird diese Fehlerarten detailliert vorstellen.

EvalError

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.

RangeError

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‹/›

ReferenceError

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‹/›

SyntaxError

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‹/›

TypeError

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‹/›

URIError

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‹/›

Vollständige Fehlerreferenz

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.