Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.
* Einige Teile dieser Funktion werden möglicherweise unterschiedlich gut unterstützt.
Error-Objekte werden geworfen, wenn Laufzeitfehler auftreten. Das Error-Objekt kann auch als Basisobjekt für benutzerdefinierte Ausnahmen verwendet werden. Im Folgenden finden Sie die standardmäßigen eingebauten Fehlertypen.
Laufzeitfehler führen dazu, dass neue Error-Objekte erstellt und geworfen werden.
Error ist ein serialisierbares Objekt, sodass es mit structuredClone() geklont oder zwischen Arbeitern mit postMessage() kopiert werden kann.
Neben dem generischen Error-Konstruktor gibt es weitere Kernfehlertypen in JavaScript. Für klientseitige Ausnahmen siehe Behandlungsanweisungen für Ausnahmen.
EvalErrorErstellt eine Instanz, die einen Fehler darstellt, der in Bezug auf die globale Funktion eval() auftritt.
RangeErrorErstellt eine Instanz, die einen Fehler darstellt, der auftritt, wenn eine numerische Variable oder ein Parameter außerhalb seines gültigen Bereichs liegt.
ReferenceErrorErstellt eine Instanz, die einen Fehler darstellt, der auftritt, wenn auf eine ungültige Referenz zugegriffen wird.
SyntaxErrorErstellt eine Instanz, die einen Syntaxfehler darstellt.
TypeErrorErstellt eine Instanz, die einen Fehler darstellt, der auftritt, wenn eine Variable oder ein Parameter nicht vom gültigen Typ ist.
URIErrorErstellt eine Instanz, die einen Fehler darstellt, der auftritt, wenn encodeURI() oder decodeURI() ungültige Parameter erhalten.
AggregateErrorErstellt eine Instanz, die mehrere Fehler in einem einzigen Fehler darstellt, wenn mehrere Fehler von einer Operation gemeldet werden müssen, beispielsweise durch Promise.any().
InternalErrorErstellt eine Instanz, die einen Fehler darstellt, der auftritt, wenn ein interner Fehler in der JavaScript-Engine geworfen wird. Z.B. "zu viele Rekursionen".
Erstellt ein neues Error-Objekt.
Eine nicht standardisierte numerische Eigenschaft, die begrenzt, wie viele Stack-Frames in einem Fehler-Stack-Trace enthalten sind.
Eine nicht standardisierte Funktion, die die Eigenschaft stack auf dem bereitgestellten Objekt erstellt.
Error.isError()Gibt true zurück, wenn das Argument ein Fehler ist, oder false andernfalls.
Error.prepareStackTrace() OptionalEine nicht standardisierte Funktion, die, falls vom Benutzer bereitgestellt, von der JavaScript-Engine für geworfene Ausnahmen aufgerufen wird, um dem Benutzer benutzerdefiniertes Formatieren von Stack-Traces zu ermöglichen. Siehe die V8 Stack Trace API Dokumentation.
Diese Eigenschaften sind auf Error.prototype definiert und werden von allen Error-Instanzen geteilt.
Error.prototype.constructorDie Konstrukturfunktion, die das Instanzobjekt erstellt hat. Für Error-Instanzen ist der Anfangswert der Error-Konstruktor.
Error.prototype.nameRepräsentiert den Namen für den Fehlertyp. Für Error.prototype.name ist der Anfangswert "Error". Unterklassen wie TypeError und SyntaxError bieten ihre eigenen name-Eigenschaften.
Error.prototype.stackEine nicht standardisierte Eigenschaft für einen Stack-Trace.
Diese Eigenschaften sind eigene Eigenschaften jeder Error-Instanz.
causeFehlerursache, die den Grund angibt, warum der aktuelle Fehler geworfen wird — üblicherweise ein anderer abgefangener Fehler. Für benutzererstellte Error-Objekte ist dies der Wert, der als cause-Eigenschaft des zweiten Arguments des Konstruktors bereitgestellt wird.
columnNumberEine nicht standardisierte Mozilla-Eigenschaft für die Spaltennummer in der Zeile, die diesen Fehler ausgelöst hat.
fileNameEine nicht standardisierte Mozilla-Eigenschaft für den Pfad zur Datei, die diesen Fehler ausgelöst hat.
lineNumberEine nicht standardisierte Mozilla-Eigenschaft für die Zeilennummer in der Datei, die diesen Fehler ausgelöst hat.
messageFehlermeldung. Für benutzererstellte Error-Objekte ist dies der String, der als erstes Argument des Konstruktors bereitgestellt wird.
Gibt einen String zurück, der das spezifizierte Objekt repräsentiert. Überschreibt die Methode Object.prototype.toString().
Üblicherweise erstellen Sie ein Error-Objekt mit der Absicht, es mit dem throw-Schlüsselwort zu werfen. Sie können den Fehler mit der Konstruktion try...catch behandeln:
Sie können sich entscheiden, nur spezifische Fehlertypen zu behandeln, indem Sie den Fehlertyp mit dem Schlüsselwort instanceof testen:
Manchmal kann ein Codeblock aus Gründen fehlschlagen, die eine unterschiedliche Behandlung erfordern, aber sehr ähnliche Fehler werfen (d.h. mit dem gleichen Typ und der gleichen Meldung).
Wenn Sie keine Kontrolle über die ursprünglichen Fehler haben, die geworfen werden, können Sie diese abfangen und neue Error-Objekte werfen, die spezifischere Nachrichten haben. Der ursprüngliche Fehler sollte dem neuen Error-Objekt im options-Parameter des Konstruktors als seine cause-Eigenschaft übergeben werden. Dies stellt sicher, dass der ursprüngliche Fehler und der Stack-Trace in höheren try/catch-Blöcken verfügbar sind.
Das folgende Beispiel zeigt dies für zwei Methoden, die ansonsten mit ähnlichen Fehlern fehlschlagen würden (doFailSomeWay() und doFailAnotherWay()):
Hinweis: Wenn Sie eine Bibliothek erstellen, sollten Sie bevorzugt die Fehlerursache nutzen, um zwischen verschiedenen geworfenen Fehlern zu unterscheiden — anstatt Ihre Nutzer zu bitten, die Fehlermeldung zu analysieren. Siehe die Seite zur Fehlerursache für ein Beispiel.
Benutzerdefinierte Fehlertypen können auch die cause-Eigenschaft verwenden, vorausgesetzt, der Konstruktor der Unterklassen übergibt den options-Parameter, wenn super() aufgerufen wird. Der Error()-Basisklassenkonstruktor liest options.cause und definiert die cause-Eigenschaft auf der neuen Fehlerinstanz.
Sie möchten möglicherweise Ihre eigenen Fehlertypen definieren, die von Error abgeleitet sind, um throw new MyError() verwenden zu können und den Fehlertyp im Ausnahmehandler mit instanceof MyError zu überprüfen. Dies führt zu einer saubereren und konsistenteren Fehlerbehandlungslogik.
Sehen Sie "Was ist eine gute Methode, um Error in JavaScript zu erweitern?" auf Stack Overflow für eine ausführliche Diskussion.
Warnung: Die eingebaute Unterklassenbildung kann nicht zuverlässig in Vor-ES6-Code transpiliert werden, da es keine Möglichkeit gibt, die Basisklasse mit einem bestimmten new.target ohne Reflect.construct() zu erstellen. Sie benötigen zusätzliche Konfiguration oder müssen manuell Object.setPrototypeOf(this, CustomError.prototype) am Ende des Konstruktors aufrufen; andernfalls wird die konstruierte Instanz keine CustomError-Instanz sein. Siehe das TypeScript FAQ für weitere Informationen.
Hinweis: Einige Browser enthalten den CustomError-Konstruktor im Stack-Trace bei Verwendung von ES2015-Klassen.
| ECMAScript® 2027 Language Specification # sec-error-objects |
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Der Bauplan für ein besseres Internet.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.