[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Error/isError [Back]  [Original]

Error.isError() - JavaScript | MDN

Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.

View in English Always switch to English

Error.isError()

Eingeschrnkt verfgbar

Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.

Want more browser support for this feature? Tell us why.

Die statische Methode Error.isError() bestimmt, ob der bergebene Wert ein Error ist.

In diesem Artikel

Syntax

js
Error.isError(value)

Parameter

value

Der zu berprfende Wert.

Rckgabewert

true, wenn value ein Error ist; andernfalls false.

Beschreibung

Error.isError() berprft, ob der bergebene Wert ein Error ist. Dies erfolgt durch einen gebrandeten Check fr ein privates Feld, das durch den Error()-Konstruktor initialisiert wurde. Dies ist derselbe Mechanismus, der von Array.isArray() verwendet wird, welcher wiederum dem Mechanismus hnlich ist, der vom in-Operator verwendet wird.

Es ist eine robustere Alternative zu instanceof Error, da es falsche Positiv- und Negativmeldungen vermeidet:

  • Error.isError() lehnt Werte ab, die keine tatschlichen Error-Instanzen sind, selbst wenn sie Error.prototype in ihrer Prototypenkette haben instanceof Error wrde diese akzeptieren, da es die Prototypenkette berprft.
  • Error.isError() akzeptiert Error-Objekte, die in einem anderen Realm konstruiert wurden instanceof Error gibt false aus, da die Identitt des Error-Konstruktors zwischen Realms unterschiedlich ist.

Error.isError() gibt true fr DOMException-Instanzen zurck. Dies liegt daran, dass DOMException, obwohl es nicht als echte Unterklasse von Error spezifiziert ist (der Error-Konstruktor ist nicht der Prototyp des DOMException-Konstruktors), fr alle gebrandeten Prfzwecke immer noch wie Error funktioniert.

Beispiele

Verwendung von Error.isError()

js
// all following calls return true
Error.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 false
Error.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 constructor
Error.isError({ __proto__: Error.prototype });

instanceof vs. Error.isError()

Wenn eine Error-Instanz berprft wird, ist Error.isError() gegenber instanceof vorzuziehen, da es ber Realms hinweg funktioniert.

js
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 Error
Error.isError(error); // true
// The prototype of error is xError.prototype, which is a
// different object from Error.prototype
error instanceof Error; // false

Normalisierung gefangener Fehler

Sie knnen Error.isError() verwenden, um zu erkennen, ob der gefangene Wert ein Fehler ist und ihn zu einem Fehlerobjekt zu normalisieren.

js
try {
  throw "Oops; this is not an Error object";
} catch (e) {
  if (!Error.isError(e)) {
    e = new Error(e);
  }
  console.error(e.message);
}

Spezifikationen

Spezifikation
ECMAScript 2027 LanguageSpecification
# sec-error.iserror

Browser-Kompatibilitt

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page