JavaScript/Objekte/Error
Die Konstruktorfunktion Error() und weitere, davon abgeleitete Konstruktoren erzeugen die Error-Objekte, die JavaScript in bestimmten Fehlersituationen wirft.
Inhaltsverzeichnis
Überblick über die Error-Objektfamilie
Es ist möglich, Error-Objekte direkt zu nutzen. Es gibt aber auch einige weitere Konstruktorfunktionen für Error-Objekte, die von JavaScript in bestimmten Fehlersituationen verwendet werden. Bislang ist es in JavaScript allerdings nicht möglich, im try...catch-Statement unterschiedliche Error-Objektklassen automatisch zu erkennen, so wie das beispielsweise in PHP möglich ist.
JavaScript kennt die folgenden eingebauten Unterklassen für Error-Objekte (native errors):
- EvalError
- Wird ausgelöst, wenn bei der Ausführung eines
eval()
-Aufrufs auftreten. - RangeError
- Wird ausgelöst, wenn ein numerischer Wert nicht in seinem gültigen Wertebereich liegt
- ReferenceError
- Wird ausgelöst, wenn auf eine undeklarierte oder uninitialisierte Variable zugegriffen wird
- SyntaxError
- Wird ausgelöst, wenn JavaScript auf ein Sprachkonstrukt stößt, das syntaktisch falsch ist. Das kann beim Aufruf von
eval()
geschehen, aber auch, wenn ein JavaScript-Programm, das neuere Features nutzt, in einem veralteten JavaScript-Interpreter ausgeführt wird. Mache Feature-Abfragen erfordern try-catch Blöcke, die einen SyntaxError erkennen, um zu prüfen, ob das Feature unterstützt wird. - TypeError
- Wird ausgelöst, wenn eine Operation nicht ausgeführt werden kann. Das kann daran liegen, dass ein Wert, der verarbeitet werden soll, einen falschen Typ hat. Die ECMAScript-Spezifikation beschreibt den TypeError aber auch als den Fehler, der geworfen werden soll, wenn die übrigen Fehlertypen nicht passen.
- URIError
- Wird ausgelöst, wenn eine der URI-Funktionen auf eine Weise verwendet wird, die mit ihrer Spezifikation nicht kompatibel ist.
In der DOM Spezifikation ist darüber hinaus DOMException
als weitere Unterklasse von Error
definiert.
Schnittstelle der eingebauten Fehlerobjekte
Alle eingebauten Fehlerobjekte verfügen über die gleiche Schnittstelle:
Konstruktor
Die Konstruktorfunktion der eingebauten Fehlerobjekte erzeugt neue Fehlerobjekte. Sie kann mit und ohne den new-Operator verwendet werden. In beiden Fällen wird ein neues Objekt erzeugt.
Parameter:
- message
- Die Nachricht, die in der message-Eigenschaft des erzeugten Objekts enthalten sein soll
- options (optional)
- Ein Objekt mit möglichen Optionen. Zur Zeit gibt es nur eine Option:
cause
: Der hier hinterlegte Wert wird in diecause
-Eigenschaft des Error-Objekts eingetragen
cause
Überschreibbar: ja Aufzählbar: nein Konfigurierbar: ja
Diese Eigenschaft ist seit 2021 verfügbar und verfolgt den Zweck, ein Error-Objekt auf ein weiteres Error-Objekt verweisen zu lassen. Oft ist es so, dass eine Funktion eine interne Fehlerbehandlung implementiert und im Fehlerfall ein Error-Objekt wirft. Der Grund für den Error kann vielfältig sein - vielleicht eine fehlgeschlagene Werteüberprüfung, oder ein Error-Objekt, das bei einer internen Operation ausgelöst und von der Funktion gefangen wurde. In beiden Fallen kann man in dem Error-Objekt, das die Funktion nach oben wirft, mittels der cause
-Option einen Eintrag hinterlassen, sei es ein Fehlertext oder die innere Exception.
message
Überschreibbar: ja Aufzählbar: nein Konfigurierbar: ja
Zu jedem Fehler gehört eine Nachricht, die beschreibt, was passiert ist. Sie wird vom Error-Konstruktor gesetzt und ist in dieser Eigenschaft zu finden. Der Text, der hier abgelegt ist, ist für Menschen gedacht.
Wenn Sie für ihre Anwendung interne Fehlercodes verwenden wollen, dann bietet das Error-Objekt dafür keine vordefinierte Schnittstelle. Sie können aber in selbst erzeugten Error-Objekten nach Belieben weitere Eigenschaften ergänzen.
name
Diese von dem Prototype-Objekt des Konstruktors, der das Error-Objekt erzeugt hat, vererbte Methode liefert den Namen des Fehlertyps und entspricht dem Namen der verwendeten Konstruktorfunktion.
toString()
Die toString()
Methode erzeugt eine lesbare Darstellung des Errors, bestehend aus den Inhalten von name
und message
. Für Error-Objekte, bei denen der Name leer ist, wird nur die Fehlernachricht zurückgegeben.
Siehe auch
MDN: Error