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 ausgelöst, wenn Laufzeitfehler auftreten. Das Error-Objekt kann auch als Basisobjekt für benutzerdefinierte Ausnahmen verwendet werden. Siehe unten für standardmäßig eingebaute Fehlertypen.
Laufzeitfehler führen zur Erstellung und zum Auslösen neuer Error-Objekte.
Error ist ein serialisierbares Objekt und kann daher mit structuredClone() geklont oder mit postMessage() zwischen Workers kopiert werden.
Neben dem allgemeinen Error-Konstruktor gibt es andere Kernfehlerkonstruktoren in JavaScript. Für clientseitige Ausnahmen siehe Ausnahmekontrollanweisungen.
EvalErrorErstellt eine Instanz, die einen Fehler darstellt, der im Zusammenhang mit der globalen Funktion eval() auftritt.
RangeErrorErstellt eine Instanz, die einen Fehler darstellt, der auftritt, wenn eine numerische Variable oder ein Parameter außerhalb des 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 übergeben werden.
AggregateErrorErstellt eine Instanz, die mehrere Fehler in einem einzigen Fehler zusammenfasst, wenn eine Operation mehrere Fehler berichten muss, zum Beispiel durch Promise.any().
InternalErrorErstellt eine Instanz, die einen Fehler darstellt, der auftritt, wenn ein interner Fehler in der JavaScript-Engine ausgelöst wird, z.B. "zu viel Rekursion".
Erstellt ein neues Error-Objekt.
Eine nicht-standard numerische Eigenschaft, die begrenzt, wie viele Stack-Frames in einem Fehler-Stack-Trace enthalten sein sollen.
Eine nicht-standard Funktion, die die stack-Eigenschaft auf dem bereitgestellten Objekt erstellt.
Error.isError()Gibt true zurück, wenn das Argument ein Fehler ist, oder false anderenfalls.
Error.prepareStackTrace() OptionalEine nicht-standard Funktion, die, wenn sie von Benutzer-Code bereitgestellt wird, von der JavaScript-Engine für ausgelöste Ausnahmen aufgerufen wird, um dem Benutzer zu ermöglichen, benutzerdefinierte Formatierungen für Stack-Traces bereitzustellen. Siehe die V8 Stack Trace API Dokumentation.
Diese Eigenschaften sind auf Error.prototype definiert und werden von allen Error-Instanzen geteilt.
Error.prototype.constructorDie Konstruktorfunktion, die das Instanzobjekt erstellt hat. Für Error-Instanzen ist der Anfangswert der Error-Konstruktor.
Error.prototype.nameRepräsentiert den Namen für die Art des Fehlers. Für Error.prototype.name ist der Anfangswert "Error". Unterklassen wie TypeError und SyntaxError bieten ihre eigenen name-Eigenschaften.
Error.prototype.stackEine nicht-standard Eigenschaft für einen Stack-Trace.
Diese Eigenschaften sind eigene Eigenschaften jeder Error-Instanz.
causeFehlerursache, die den Grund angibt, warum der aktuelle Fehler ausgelöst wird — normalerweise ein anderer gefangener Fehler. Bei benutzererstellten Error-Objekten ist dies der Wert, der als die cause-Eigenschaft des zweiten Arguments des Konstruktors bereitgestellt wird.
columnNumberEine nicht-standard Mozilla-Eigenschaft für die Spaltennummer in der Zeile, die diesen Fehler ausgelöst hat.
fileNameEine nicht-standard Mozilla-Eigenschaft für den Pfad zur Datei, die diesen Fehler ausgelöst hat.
lineNumberEine nicht-standard Mozilla-Eigenschaft für die Zeilennummer in der Datei, die diesen Fehler ausgelöst hat.
messageFehlermeldung. Bei benutzererstellten Error-Objekten ist dies der String, der als erstes Argument des Konstruktors bereitgestellt wird.
Gibt einen String zurück, der das spezifizierte Objekt darstellt. Überschreibt die Object.prototype.toString()-Methode.
Normalerweise erstellt man ein Error-Objekt mit der Absicht, es mit dem throw-Schlüsselwort auszulösen. Sie können den Fehler mit der try...catch-Konstruktion behandeln:
Sie können sich dafür entscheiden, nur spezifische Fehlertypen zu behandeln, indem Sie den Fehlertyp mit dem instanceof-Schlüsselwort testen:
Manchmal kann ein Codeblock aus Gründen scheitern, die eine unterschiedliche Behandlung erfordern, aber sehr ähnliche Fehler werfen (d.h. mit demselben Typ und derselben Meldung).
Wenn Sie keine Kontrolle über die ursprünglich geworfenen Fehler haben, ist eine Möglichkeit, sie abzufangen und neue Error-Objekte mit spezifischeren Nachrichten zu werfen. Der ursprüngliche Fehler sollte im options-Parameter des Konstruktors als seine cause-Eigenschaft an das neue Error übergeben werden. Dies stellt sicher, dass der ursprüngliche Fehler und der Stack-Trace für höherstufige try/catch-Blöcke verfügbar sind.
Das folgende Beispiel zeigt dies für zwei Methoden, die andernfalls mit ähnlichen Fehlern scheitern würden (doFailSomeWay() und doFailAnotherWay()):
Hinweis: Wenn Sie eine Bibliothek erstellen, sollten Sie es bevorzugen, die Fehlerursache zu verwenden, um zwischen verschiedenen ausgegebenen Fehlern zu unterscheiden — anstatt von Ihren Nutzern zu verlangen, die Fehlermeldung zu analysieren. Siehe die Error Cause-Seite für ein Beispiel.
Benutzerdefinierte Fehlertypen können ebenfalls die cause-Eigenschaft verwenden, vorausgesetzt, dass der Konstruktor der Unterklassen den options-Parameter beim Aufruf von super() übergibt. Der Error()-Basis-Konstruktor wird options.cause lesen und die cause-Eigenschaft an der neuen Fehlerinstanz definieren.
Sie könnten Ihre eigenen Fehlertypen definieren, die sich von Error ableiten, um throw new MyError() nutzen zu können und mit instanceof MyError die Art des Fehlers im Ausnahmebehandler zu überprüfen. Dies führt zu saubererem und konsistenterem Fehlerbehandlungscode.
Siehe "What's a good way to extend Error in JavaScript?" auf Stack Overflow für eine eingehende Diskussion.
Warnung: Eingebaute Vererbungen können nicht zuverlässig in Code vor-ES6 transpiliert werden, da es keine Möglichkeit gibt, die Basisklasse mit einem bestimmten new.target ohne Reflect.construct() zu konstruieren. Sie benötigen zusätzliche Konfiguration oder rufen manuell Object.setPrototypeOf(this, CustomError.prototype) am Ende des Konstruktors auf; andernfalls wird die konstruierte Instanz nicht eine CustomError-Instanz sein. Siehe die TypeScript FAQ für mehr Informationen.
Hinweis: Einige Browser beinhalten den CustomError-Konstruktor im Stack-Trace, wenn ES2015-Klassen verwendet werden.
| ECMAScript® 2027 Language Specification # sec-error-objects |
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Der Bauplan für ein besseres Internet.
Besuche die gemeinnützige Muttergesellschaft der Mozilla Corporation, die Mozilla Foundation.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.