Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
Error.isError()
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Die statische MethodeError.isError() bestimmt, ob der übergebene Wert einError ist.
In diesem Artikel
Syntax
Error.isError(value)Parameter
valueDer zu überprüfende Wert.
Rückgabewert
true, wennvalue einError ist; andernfallsfalse.
Beschreibung
Error.isError() überprüft, ob der übergebene Wert einError ist. Dies erfolgt durch einengebrandeten Check für ein privates Feld, das durch denError()-Konstruktor initialisiert wurde. Dies ist derselbe Mechanismus, der vonArray.isArray() verwendet wird, welcher wiederum dem Mechanismus ähnlich ist, der vomin-Operator verwendet wird.
Es ist eine robustere Alternative zuinstanceof Error, da es falsche Positiv- und Negativmeldungen vermeidet:
Error.isError()lehnt Werte ab, die keine tatsächlichenError-Instanzen sind, selbst wenn sieError.prototypein ihrer Prototypenkette haben —instanceof Errorwürde diese akzeptieren, da es die Prototypenkette überprüft.Error.isError()akzeptiertError-Objekte, die in einem anderen Realm konstruiert wurden —instanceof Errorgibtfalseaus, da die Identität desError-Konstruktors zwischen Realms unterschiedlich ist.
Error.isError() gibttrue fürDOMException-Instanzen zurück. Dies liegt daran, dassDOMException, obwohl es nicht als echte Unterklasse vonError spezifiziert ist (derError-Konstruktor ist nicht der Prototyp desDOMException-Konstruktors), für alle gebrandeten Prüfzwecke immer noch wieError funktioniert.
Beispiele
>Verwendung von Error.isError()
// all following calls return trueError.isError(new Error());Error.isError(new TypeError());Error.isError(new DOMException());try { 1 + 1n;} catch (e) { console.log(Error.isError(e)); // The operation threw a TypeError, so this returns true}// all following calls return falseError.isError();Error.isError({});Error.isError(null);Error.isError(undefined);Error.isError(17);Error.isError("Error");Error.isError(true);Error.isError(false);// This is not an error, because the object does not have the private field// initialized by the Error constructorError.isError({ __proto__: Error.prototype });instanceof vs. Error.isError()
Wenn eineError-Instanz überprüft wird, istError.isError() gegenüberinstanceof vorzuziehen, da es über Realms hinweg funktioniert.
const iframe = document.createElement("iframe");document.body.appendChild(iframe);const xError = window.frames[window.frames.length - 1].Error;const error = new xError();// Correctly checking for ErrorError.isError(error); // true// The prototype of error is xError.prototype, which is a// different object from Error.prototypeerror instanceof Error; // falseNormalisierung gefangener Fehler
Sie könnenError.isError() verwenden, um zu erkennen, ob der gefangene Wert ein Fehler ist und ihn zu einem Fehlerobjekt zu normalisieren.
try { throw "Oops; this is not an Error object";} catch (e) { if (!Error.isError(e)) { e = new Error(e); } console.error(e.message);}Spezifikationen
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-error.iserror> |