Get to know MDN better
Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
* Certaines parties de cette fonctionnalité peuvent bénéficier de prise en charge variables.
Les objets Error sont levés lorsque des erreurs d'exécution se produisent. L'objet Error peut aussi être utilisé comme objet de base pour des exceptions définies par l'utilisateur·ice. Voir ci-dessous pour les types d'erreurs intégrés standards.
Les erreurs d'exécution entraînent la création et la levée de nouveaux objets Error.
Error est un objet sérialisable, il peut donc être cloné avec structuredClone() ou copié entre Workers en utilisant postMessage().
Outre le constructeur générique Error, il existe d'autres constructeurs d'erreur principaux en JavaScript. Pour les exceptions côté client, voir Contrôle du flux d'instructions et gestion des erreurs.
EvalErrorCrée une instance représentant une erreur qui se produit concernant la fonction globale eval().
RangeErrorCrée une instance représentant une erreur qui se produit lorsqu'une variable ou un paramètre numérique est en dehors de sa plage de validité.
ReferenceErrorCrée une instance représentant une erreur qui se produit lors du déréférencement d'une référence invalide.
SyntaxErrorCrée une instance représentant une erreur de syntaxe.
TypeErrorCrée une instance représentant une erreur qui se produit lorsqu'une variable ou un paramètre n'est pas d'un type valide.
URIErrorCrée une instance représentant une erreur qui se produit lorsque encodeURI() ou decodeURI() reçoivent des paramètres invalides.
AggregateErrorCrée une instance représentant plusieurs erreurs regroupées dans une seule erreur lorsque plusieurs erreurs doivent être signalées par une opération, par exemple par Promise.any().
InternalErrorCrée une instance représentant une erreur qui se produit lorsqu'une erreur interne du moteur JavaScript est levée. Par exemple « too much recursion ».
Crée un nouvel objet Error.
Une propriété numérique non standard qui limite le nombre de trames de pile à inclure dans une trace de pile d'erreur.
Une fonction non standard qui crée la propriété stack sur l'objet fourni.
Error.isError()Retourne true si l'argument est une erreur, ou false sinon.
Error.prepareStackTrace() FacultatifUne fonction non standard qui, si elle est fournie par le code de l'utilisateur·ice, est appelée par le moteur JavaScript pour les exceptions levées, permettant à l'utilisateur·ice de fournir un formatage personnalisé pour les traces de pile. Voir la documentation de l'API V8 Stack Trace (angl.).
Ces propriétés sont définies sur Error.prototype et partagées par toutes les instances de Error.
Error.prototype.constructorLa fonction constructeur qui a créé l'objet d'instance. Pour les instances de Error, la valeur initiale est le constructeur Error.
Error.prototype.nameReprésente le nom du type d'erreur. Pour Error.prototype.name, la valeur initiale est "Error". Les sous-classes comme TypeError et SyntaxError fournissent leur propre propriété name.
Error.prototype.stackUne propriété non standard pour une trace de pile.
Ces propriétés sont des propriétés propres à chaque instance de Error.
causeCause de l'erreur indiquant la raison pour laquelle l'erreur courante est levée — généralement une autre erreur interceptée. Pour les objets Error créés par l'utilisateur·ice, il s'agit de la valeur fournie comme propriété cause du second argument du constructeur.
columnNumberPropriété non standard de Mozilla pour le numéro de colonne dans la ligne qui a généré cette erreur.
fileNamePropriété non standard de Mozilla pour le chemin du fichier qui a généré cette erreur.
lineNumberPropriété non standard de Mozilla pour le numéro de ligne dans le fichier qui a généré cette erreur.
messageMessage d'erreur. Pour les objets Error créés par l'utilisateur·ice, il s'agit de la chaîne de caractères fournie comme premier argument du constructeur.
Retourne une chaîne de caractères représentant l'objet défini. Redéfinit la méthode Object.prototype.toString().
On crée habituellement un objet Error dans l'intention de le déclencher en utilisant le mot-clé throw. L'erreur peut ensuite être interceptée et gérée en utilisant la construction try...catch :
Vous pouvez choisir de gérer uniquement certains types d'erreur en testant le type de l'erreur avec le mot-clé instanceof :
Il arrive parfois que des erreurs semblables (type et message identiques) nécessitent des traitements différents.
Si vous ne maîtrisez pas l'origine des erreurs, vous pouvez les intercepter et renvoyer de nouveaux objets Error avec des messages plus spécifiques. L'erreur d'origine doit être passée au nouveau Error dans le paramètre options du constructeur comme propriété cause. Cela garantit que l'erreur d'origine et la pile d'appels sont disponibles pour les blocs try/catch de plus haut niveau.
Dans l'exemple qui suit, on illustre ceci pour deux méthodes qui échoueraient avec des erreurs similaires (echecUneFacon() et echecAutreFacon()) :
Note : Si vous créez une bibliothèque, il est préférable d'utiliser la cause de l'erreur pour différencier les différentes erreurs émises — plutôt que de demander à vos utilisateur·ice·s d'analyser le message d'erreur. Voir la page sur la cause d'erreur pour un exemple.
Les types d'erreur personnalisés peuvent également utiliser la propriété cause, à condition que le constructeur des sous-classes transmette le paramètre options lors de l'appel à super(). Le constructeur de la classe de base Error() lira options.cause et définira la propriété cause sur la nouvelle instance d'erreur.
Il est possible de définir ses propres types d'erreur dérivés de Error et d'utiliser alors throw new MonErreur() et instanceof MonErreur pour vérifier le type d'erreur lors du traitement. Cela permet d'avoir un code plus concis et cohérent pour le traitement des erreurs.
Voir « Quelle est une bonne façon d'étendre Error en JavaScript ? » (angl.) sur StackOverflow pour une discussion détaillée.
Attention : Le sous-classage natif ne peut pas être transpilé de manière fiable vers du code pré-ES6, car il n'existe aucun moyen de construire la super-classe avec un new.target particulier sans Reflect.construct(). Vous avez besoin d'une configuration supplémentaire (angl.) ou d'appeler manuellement Object.setPrototypeOf(this, CustomError.prototype) à la fin du constructeur ; sinon, l'instance construite ne sera pas une instance de CustomError. Voir la FAQ TypeScript (angl.) pour plus d'informations.
Note : Certains navigateurs incluent le constructeur CustomError dans la pile d'appel lorsque les classes ES2015 sont utilisées.
| ECMAScript® 2027 Language Specification # sec-error-objects |
Activez JavaScript pour afficher ce tableau de compatibilité des navigateurs.
Cette page a été modifiée le 21 févr. 2026 par les contributeur·ice·s du MDN.
Votre modèle pour un internet meilleur.
Visitez la société mère à but non lucratif de Mozilla Corporation, la Fondation Mozilla.
Certaines parties de ce contenu sont protégées par le droit d'auteur ©1998—2026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.