Error : méthode statique isError()
Limited availability
Cette fonctionnalité n'est pas Compatible car elle ne fonctionne pas dans certains des navigateurs les plus utilisés.
La méthode statique isError() détermine si la valeur passée est une erreur Error.
Syntaxe
Error.isError(value)
Paramètres
value-
La valeur à vérifier.
Valeur de retour
true si value est une Error ; sinon, false.
Description
Error.isError() vérifie si la valeur passée est une Error. Elle le fait en effectuant une vérification brandée pour un champ privé initialisé par le constructeur Error().
C'est le même mécanisme utilisé par Array.isArray(), qui est lui‑même similaire au mécanisme utilisé par l'opérateur in.
C'est une alternative plus robuste à instanceof Error car elle évite les faux positifs et les faux négatifs :
Error.isError()rejette les valeurs qui ne sont pas de véritables instances deError, même si elles ontError.prototypedans leur chaîne de prototypes —instanceof Errorles accepterait car il vérifie la chaîne de prototypes.Error.isError()accepte les objetsErrorcréés dans un autre contexte d'exécution —instanceof Errorrenvoiefalsepour ces objets car l'identité du constructeurErrordiffère entre les contextes d'exécution.
Error.isError() retourne true pour les instances de DOMException. Cela s'explique par le fait que, bien que DOMException ne soit pas défini comme une véritable sous‑classe d'Error (le constructeur Error n'est pas le prototype du constructeur DOMException), DOMException se comporte néanmoins comme Error pour tous les besoins de la vérification brandée.
Exemples
>Utiliser la méthode isError()
// tous les appels suivants retournent true
Error.isError(new Error());
Error.isError(new TypeError());
Error.isError(new DOMException());
try {
1 + 1n;
} catch (e) {
console.log(Error.isError(e)); // L'opération a levé un TypeError, donc ceci retourne true
}
// tous les appels suivants retournent false
Error.isError();
Error.isError({});
Error.isError(null);
Error.isError(undefined);
Error.isError(17);
Error.isError("Error");
Error.isError(true);
Error.isError(false);
// Ceci n'est pas une erreur, car l'objet n'a pas le champ privé
// initialisé par le constructeur Error
Error.isError({ __proto__: Error.prototype });
instanceof vs. Error.isError()
Lors de la vérification d'une instance d'Error, Error.isError() est préféré à instanceof car il fonctionne entre contextes d'exécution.
const iframe = document.createElement("iframe");
document.body.appendChild(iframe);
const xError = window.frames[window.frames.length - 1].Error;
const error = new xError();
// Vérification correcte d'Error
Error.isError(error); // true
// Le prototype de error est xError.prototype, qui est un
// objet différent de Error.prototype
error instanceof Error; // false
Normaliser les erreurs interceptées
Vous pouvez utiliser Error.isError() pour détecter si la valeur interceptée est une erreur et la normaliser en un objet Error.
try {
throw "Oups : ceci n'est pas un objet Error";
} catch (e) {
if (!Error.isError(e)) {
e = new Error(e);
}
console.error(e.message);
}
Spécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-error.iserror> |