| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Error | [Back] [Original] |
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 Gerten und in vielen Browserversionen. Sie ist seit Juli 2015 browserbergreifend verfgbar.
* Einige Teile dieser Funktion werden mglicherweise unterschiedlich gut untersttzt.
Error-Objekte werden geworfen, wenn Laufzeitfehler auftreten. Das Error-Objekt kann auch als Basisobjekt fr benutzerdefinierte Ausnahmen verwendet werden. Im Folgenden finden Sie die standardmigen eingebauten Fehlertypen.
Laufzeitfehler fhren 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. Fr klientseitige Ausnahmen siehe Behandlungsanweisungen fr 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 auerhalb seines gltigen Bereichs liegt.
ReferenceErrorErstellt eine Instanz, die einen Fehler darstellt, der auftritt, wenn auf eine ungltige 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 gltigen Typ ist.
URIErrorErstellt eine Instanz, die einen Fehler darstellt, der auftritt, wenn encodeURI() oder decodeURI() ungltige Parameter erhalten.
AggregateErrorErstellt eine Instanz, die mehrere Fehler in einem einzigen Fehler darstellt, wenn mehrere Fehler von einer Operation gemeldet werden mssen, beispielsweise durch Promise.any().
InternalError Erstellt eine Instanz, die einen Fehler darstellt, der auftritt, wenn ein interner Fehler in der JavaScript-Engine geworfen wird. Z.B. "zu viele Rekursionen".
Error()Erstellt ein neues Error-Objekt.
Error.stackTraceLimit Eine nicht standardisierte numerische Eigenschaft, die begrenzt, wie viele Stack-Frames in einem Fehler-Stack-Trace enthalten sind.
Error.captureStackTrace()Eine nicht standardisierte Funktion, die die Eigenschaft stack auf dem bereitgestellten Objekt erstellt.
Error.isError()Gibt true zurck, wenn das Argument ein Fehler ist, oder false andernfalls.
Error.prepareStackTrace() OptionalEine nicht standardisierte Funktion, die, falls vom Benutzer bereitgestellt, von der JavaScript-Engine fr geworfene Ausnahmen aufgerufen wird, um dem Benutzer benutzerdefiniertes Formatieren von Stack-Traces zu ermglichen. 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. Fr Error-Instanzen ist der Anfangswert der Error-Konstruktor.
Error.prototype.nameReprsentiert den Namen fr den Fehlertyp. Fr Error.prototype.name ist der Anfangswert "Error". Unterklassen wie TypeError und SyntaxError bieten ihre eigenen name-Eigenschaften.
Error.prototype.stack Eine nicht standardisierte Eigenschaft fr 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. Fr benutzererstellte Error-Objekte ist dies der Wert, der als cause-Eigenschaft des zweiten Arguments des Konstruktors bereitgestellt wird.
columnNumber Eine nicht standardisierte Mozilla-Eigenschaft fr die Spaltennummer in der Zeile, die diesen Fehler ausgelst hat.
fileName Eine nicht standardisierte Mozilla-Eigenschaft fr den Pfad zur Datei, die diesen Fehler ausgelst hat.
lineNumber Eine nicht standardisierte Mozilla-Eigenschaft fr die Zeilennummer in der Datei, die diesen Fehler ausgelst hat.
messageFehlermeldung. Fr benutzererstellte Error-Objekte ist dies der String, der als erstes Argument des Konstruktors bereitgestellt wird.
Error.prototype.toString()Gibt einen String zurck, der das spezifizierte Objekt reprsentiert. berschreibt die Methode Object.prototype.toString().
blicherweise erstellen Sie ein Error-Objekt mit der Absicht, es mit dem throw-Schlsselwort zu werfen.
Sie knnen den Fehler mit der Konstruktion try...catch behandeln:
try {
throw new Error("Whoops!");
} catch (e) {
console.error(`${e.name}: ${e.message}`);
}
Sie knnen sich entscheiden, nur spezifische Fehlertypen zu behandeln, indem Sie den Fehlertyp mit dem Schlsselwort instanceof testen:
try {
foo.bar();
} catch (e) {
if (e instanceof EvalError) {
console.error(`${e.name}: ${e.message}`);
} else if (e instanceof RangeError) {
console.error(`${e.name}: ${e.message}`);
}
// etc.
else {
// If none of our cases matched leave the Error unhandled
throw e;
}
}
Manchmal kann ein Codeblock aus Grnden 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 ursprnglichen Fehler haben, die geworfen werden, knnen Sie diese abfangen und neue Error-Objekte werfen, die spezifischere Nachrichten haben.
Der ursprngliche Fehler sollte dem neuen Error-Objekt im options-Parameter des Konstruktors als seine cause-Eigenschaft bergeben werden. Dies stellt sicher, dass der ursprngliche Fehler und der Stack-Trace in hheren try/catch-Blcken verfgbar sind.
Das folgende Beispiel zeigt dies fr zwei Methoden, die ansonsten mit hnlichen Fehlern fehlschlagen wrden (doFailSomeWay() und doFailAnotherWay()):
function doWork() {
try {
doFailSomeWay();
} catch (err) {
throw new Error("Failed in some way", { cause: err });
}
try {
doFailAnotherWay();
} catch (err) {
throw new Error("Failed in another way", { cause: err });
}
}
try {
doWork();
} catch (err) {
switch (err.message) {
case "Failed in some way":
handleFailSomeWay(err.cause);
break;
case "Failed in another way":
handleFailAnotherWay(err.cause);
break;
}
}
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 fr ein Beispiel.
Benutzerdefinierte Fehlertypen knnen 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.
class MyError extends Error {
constructor(message, options) {
// Need to pass `options` as the second parameter to install the "cause" property.
super(message, options);
}
}
console.log(new MyError("test", { cause: new Error("cause") }).cause);
// Error: cause
Sie mchten mglicherweise Ihre eigenen Fehlertypen definieren, die von Error abgeleitet sind, um throw new MyError() verwenden zu knnen und den Fehlertyp im Ausnahmehandler mit instanceof MyError zu berprfen. Dies fhrt zu einer saubereren und konsistenteren Fehlerbehandlungslogik.
Sehen Sie "Was ist eine gute Methode, um Error in JavaScript zu erweitern?" auf Stack Overflow fr eine ausfhrliche Diskussion.
Warnung:
Die eingebaute Unterklassenbildung kann nicht zuverlssig in Vor-ES6-Code transpiliert werden, da es keine Mglichkeit gibt, die Basisklasse mit einem bestimmten new.target ohne Reflect.construct() zu erstellen. Sie bentigen zustzliche Konfiguration oder mssen manuell Object.setPrototypeOf(this, CustomError.prototype) am Ende des Konstruktors aufrufen; andernfalls wird die konstruierte Instanz keine CustomError-Instanz sein. Siehe das TypeScript FAQ fr weitere Informationen.
Hinweis:
Einige Browser enthalten den CustomError-Konstruktor im Stack-Trace bei Verwendung von ES2015-Klassen.
class CustomError extends Error {
constructor(foo = "bar", ...params) {
// Pass remaining arguments (including vendor specific ones) to parent constructor
super(...params);
// Maintains proper stack trace for where our error was thrown (non-standard)
if (Error.captureStackTrace) {
Error.captureStackTrace(this, CustomError);
}
this.name = "CustomError";
// Custom debugging information
this.foo = foo;
this.date = new Date();
}
}
try {
throw new CustomError("baz", "bazMessage");
} catch (e) {
console.error(e.name); // CustomError
console.error(e.foo); // baz
console.error(e.message); // bazMessage
console.error(e.stack); // stack trace
}
| Spezifikation |
|---|
| ECMAScript 2027 LanguageSpecification # sec-error-objects |
Error mit Untersttzung fr cause in core-jscausethrowtry...catchErrorObject/FunctionAggregateErrorEvalErrorInternalErrorRangeErrorReferenceErrorSyntaxErrorTypeErrorURIErrorDer Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |