aboutsummaryrefslogtreecommitdiff
path: root/files/fr/web/javascript/reference/objets_globaux/error/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/fr/web/javascript/reference/objets_globaux/error/index.html')
-rw-r--r--files/fr/web/javascript/reference/objets_globaux/error/index.html249
1 files changed, 249 insertions, 0 deletions
diff --git a/files/fr/web/javascript/reference/objets_globaux/error/index.html b/files/fr/web/javascript/reference/objets_globaux/error/index.html
new file mode 100644
index 0000000000..e267e237f4
--- /dev/null
+++ b/files/fr/web/javascript/reference/objets_globaux/error/index.html
@@ -0,0 +1,249 @@
+---
+title: Error
+slug: Web/JavaScript/Reference/Objets_globaux/Error
+tags:
+ - Error
+ - JavaScript
+ - Reference
+translation_of: Web/JavaScript/Reference/Global_Objects/Error
+---
+<div>{{JSRef}}</div>
+
+<p>Le constructeur <strong><code>Error</code></strong> crée un objet d'erreur. Des instances d'objets <code>Error</code> sont déclenchées lorsque des erreurs d'exécution surviennent. L'objet <code>Error</code> peut aussi être utilisé comme objet de base pour des exceptions définies par l'utilisateur. Voir ci-dessous pour les types d'erreur natifs standard.</p>
+
+<h2 id="Syntaxe">Syntaxe</h2>
+
+<pre class="syntaxbox notranslate">new Error([<var>message</var>[, <var>fileName</var>[, <var>lineNumber</var>]]])</pre>
+
+<h3 id="Paramètres">Paramètres</h3>
+
+<dl>
+ <dt><code>message</code> {{optional_inline}}</dt>
+ <dd>Description de l'erreur sous une forme lisible par un humain.</dd>
+ <dt><code>fileName</code> {{optional_inline}}{{Non-standard_inline}}</dt>
+ <dd>Argument qui sera utilisé pour la valeur de la propriété <code>fileName</code> dans l'objet <code>Error</code> créé. Par défaut, ce sera le nom du fichier contenant le code qui a appelé le constructeur <code>Error()</code>.</dd>
+ <dt><code>lineNumber</code> {{optional_inline}}{{Non-standard_inline}}</dt>
+ <dd>Argument qui sera utilisé pour la valeur de la propriété <code>lineNumber</code> dans l'objet <code>Error</code> créé. Par défaut, ce sera le numéro de la ligne contenant l'invocation du constructeur <code>Error()</code>.</dd>
+</dl>
+
+<h2 id="Description">Description</h2>
+
+<p>Les erreurs d'exécution ont pour résultat la création et le déclenchement d'objets <code>Error</code>.</p>
+
+<p>Cette page documente l'utilisation de l'objet <code>Error</code> lui-même et son utilisation comme fonction constructeur. Pour une liste des propriétés et des méthodes héritées par les instances d'<code>Error</code>,  voir {{jsxref("Error.prototype")}}.</p>
+
+<h3 id="Utilisation_de_Error_comme_fonction">Utilisation de <code>Error</code> comme fonction</h3>
+
+<p>Lorsqu'<code>Error</code> est utilisée comme fonction sans utiliser l'opérateur {{jsxref("Opérateurs/L_opérateur_new", "new")}}, cet appel renverra un objet <code>Error</code>. Aussi, un simple appel à <code>Error</code> produira le même résultat qu'une invocation avec <code>new</code>.</p>
+
+<pre class="brush: js notranslate">// Cette instruction :
+const x = Error("J'ai été créée sans new");
+
+// Aura le même effet que
+const y = new Error("J'ai été créée avec new");</pre>
+
+<h3 id="Types_derreur">Types d'erreur</h3>
+
+<p>En plus du constructeur <code>Error</code> générique, il existe sept autres constructeurs d'erreur de base en JavaScript. Pour les exceptions côté client, voir <a href="/fr/docs/Web/JavaScript/Guide/Contr%C3%B4le_du_flux_Gestion_des_erreurs">Contrôle du flux d'instructions et gestion des erreurs</a>.</p>
+
+<dl>
+ <dt>{{jsxref("EvalError")}}</dt>
+ <dd>Crée une instance représentant une erreur se produisant en relation avec la fonction globale {{jsxref("eval","eval()")}}.</dd>
+ <dt>{{jsxref("RangeError")}}</dt>
+ <dd>Crée une instance représentant une erreur se produisant quand une variable numérique ou un paramètre est en dehors de sa plage de validité.</dd>
+ <dt>{{jsxref("ReferenceError")}}</dt>
+ <dd>Crée une instance représentant une erreur se produisant lors du déréférencement d'une référence invalide.</dd>
+ <dt>{{jsxref("SyntaxError")}}</dt>
+ <dd>Crée une instance représentant une erreur de syntaxe se produisant lors d'une analyse de code dans {{jsxref("eval", "eval()")}}.</dd>
+ <dt>{{jsxref("TypeError")}}</dt>
+ <dd>Crée une instance représentant une erreur se produisant quand une variable ou un paramètre n'est pas d'un type valide.</dd>
+ <dt>{{jsxref("URIError")}}</dt>
+ <dd>Crée une instance représentant une erreur se produisant quand des paramètres invalides sont passés à {{jsxref("encodeURI", "encodeURI()")}} ou à {{jsxref("decodeURI", "decodeURI()")}}.</dd>
+ <dt>{{JSxRef("AggregateError")}}</dt>
+ <dd>Crée une instance représentant différentes erreurs agrégées en une seule lorsque plusieurs erreurs sont rapportées par une opération, par exemple avec {{JSxRef("Promise.any()")}}.</dd>
+ <dt>{{jsxref("InternalError")}} {{non-standard_inline}}</dt>
+ <dd>Crée une instance représentant une erreur se produisant quand une erreur interne dans le moteur JavaScript est déclenchée. Par ex., "too much recursion".</dd>
+</dl>
+
+<h2 id="Propriétés">Propriétés</h2>
+
+<dl>
+ <dt>{{jsxref("Error.prototype")}}</dt>
+ <dd>Permet l'ajout de propriétés aux instances <code>Error</code>.</dd>
+</dl>
+
+<h2 id="Méthodes">Méthodes</h2>
+
+<p>L'objet global <code>Error</code> ne contient pas de méthodes en propre, toutefois, il hérite de certaines méthodes via la chaine de prototype.</p>
+
+<h2 id="Instances_dError">Instances d'<code>Error</code></h2>
+
+<div>{{page('fr/docs/JavaScript/Reference/Objets_globaux/Error/prototype', 'Description')}}</div>
+
+<h3 id="Propriétés_2">Propriétés</h3>
+
+<p>{{page('fr/docs/JavaScript/Reference/Objets_globaux/Error/prototype', 'Propriétés')}}</p>
+
+<h3 id="Méthodes_2">Méthodes</h3>
+
+<p>{{page('fr/docs/JavaScript/Reference/Objets_globaux/Error/prototype', 'Méthodes')}}</p>
+
+<h2 id="Exemples">Exemples</h2>
+
+<h3 id="Déclenchement_dune_erreur_générique">Déclenchement d'une erreur générique</h3>
+
+<p>Vous créez habituellement un objet <code>Error</code> dans l'intention de le déclencher en utilisant le mot-clé {{jsxref("Instructions/throw", "throw")}}. Vous pouvez gérer l'erreur en utilisant la construction {{jsxref("Instructions/try...catch", "try...catch")}} :</p>
+
+<pre class="brush: js notranslate">try {
+ throw new Error("Ouups !");
+} catch (e) {
+ console.log(e.name + ": " + e.message);
+}
+</pre>
+
+<h3 id="Gestion_dune_erreur_spécifique">Gestion d'une erreur spécifique</h3>
+
+<p>Vous pouvez choisir de ne gérer que des types d'erreur particuliers en testant le type de l'erreur via la propriété {{jsxref("Object.prototype.constructor", "constructor")}} de l'erreur ou, si vous écrivez pour des interpréteurs JavaScript modernes, le mot-clé {{jsxref("Opérateurs/instanceof", "instanceof")}} :</p>
+
+<pre class="brush: js notranslate">try {
+ machin.truc();
+} catch (e) {
+ if (e instanceof EvalError) {
+ console.log(e.name + ": " + e.message);
+ } else if (e instanceof RangeError) {
+ console.log(e.name + ": " + e.message);
+ }
+ // ... etc
+}
+</pre>
+
+<h3 id="Types_derreur_personnalisés">Types d'erreur personnalisés</h3>
+
+<p>Vous pouvez vouloir définir vos propres types d'erreur dérivants d'<code>Error</code> pour pouvoir écrire <code>throw new MonErreur()</code> et utiliser <code>instanceof MonErreur</code> afin de vérifier le type d'erreur dans le gestionnaire d'exceptions. Cela a pour résultat un code de gestion d'erreur plus propre et plus cohérent. Voir <a href="http://stackoverflow.com/questions/1382107/whats-a-good-way-to-extend-error-in-javascript"><em>What's a good way to extend Error in JavaScript?</em></a> sur StackOverflow pour une discussion en profondeur.</p>
+
+<h4 id="Classes_derreur_personnalisées_avec_ECMAScript_2015_ES6">Classes d'erreur personnalisées avec ECMAScript 2015 / ES6</h4>
+
+<div class="warning">
+<p><strong>Attention !</strong> Babel, dans les versions antérieures à Babel 7, ainsi que d'autres transpileurs ne géreront pas correctement le code suivant sans <a href="https://github.com/loganfsmyth/babel-plugin-transform-builtin-extend">configuration supplémentaire</a>. Les versions de Babel antérieures à la version 7 peuvent uniquement gérer les classes d'erreur personnalisées lorsque celles-ci sont créées avec <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/defineProperty">Object.defineProperty()</a></code>.</p>
+</div>
+
+<div class="note">
+<p><strong>Note :</strong> Certains navigateurs incluent le constructeur <code>CustomError</code> (Erreur Personnalisée) dans la pile d'appels lors de l'utilisation de classes ES6.</p>
+</div>
+
+<pre class="brush: js notranslate">class CustomError extends Error {
+ constructor(machin = 'truc', ...params) {
+ // Passer les arguments restants (incluant ceux spécifiques au vendeur) au constructeur parent
+ super(...params);
+
+ // Maintenir dans la pile une trace adéquate de l'endroit où l'erreur a été déclenchée (disponible seulement en V8)
+ if(Error.captureStackTrace) {
+ Error.captureStackTrace(this, CustomError);
+ }
+ this.name = 'CustomError';
+ // Informations de déboguage personnalisées
+ this.machin = machin;
+ this.date = new Date();
+ }
+}
+
+try {
+ throw new CustomError('bidule', 'messageBidule');
+} catch(e){
+ console.log(e.name); // CustomError
+ console.log(e.machin); // bidule
+ console.log(e.message); // messageBidule
+ console.log(e.stack); // stacktrace
+}</pre>
+
+<h4 id="Objet_derreur_personnalisé_ES5">Objet d'erreur personnalisé ES5</h4>
+
+<div class="warning">
+<p><strong>Attention ! Tous</strong> les navigateurs incluent le constructeur <code>CustomError</code> dans la pile  d'appel lorsqu'une déclaration prototypale est utilisée.</p>
+</div>
+
+<pre class="brush: js notranslate">function CustomError(machin, message, nomFichier, numeroLigne) {
+ var instance = new Error(message, nomFichier, numeroLigne);
+ instance.name = 'CustomError';
+ instance.machin = machin;
+ Object.setPrototypeOf(instance, Object.getPrototypeOf(this));
+ if(Error.captureStackTrace) {
+ Error.captureStackTrace(instance, CustomError);
+ }
+ return instance;
+}
+
+CustomError.prototype = Object.create(Error.prototype, {
+ constructor: {
+ value: Error,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+});
+
+if (Object.setPrototypeOf){
+ Object.setPrototypeOf(CustomError, Error);
+} else {
+ CustomError.__proto__ = Error;
+}
+
+
+try {
+ throw new CustomError('bidule', 'messageBidule');
+} catch(e){
+ console.log(e.name); // CustomError
+ console.log(e.toto); // bidule
+ console.log(e.message); // messageBidule
+ console.log(e.lineNumber); // 29
+}</pre>
+
+<h2 id="Spécifications">Spécifications</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Spécification</th>
+ <th scope="col">État</th>
+ <th scope="col">Commentaires</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-error-objects', 'Error')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES2015', '#sec-error-objects', 'Error')}}</td>
+ <td>{{Spec2('ES2015')}}</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES5.1', '#sec-15.11', 'Error')}}</td>
+ <td>{{Spec2('ES5.1')}}</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES1')}}</td>
+ <td>{{Spec2('ES1')}}</td>
+ <td>Définition initiale. Implémentée avec JavaScript 1.1.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2>
+
+<div>
+<div class="hidden">Le tableau de compatibilité de cette page a été généré à partir de données structurées. Si vous souhaitez contribuer aux données, merci de regarder <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> et envoyez-nous une <em>pull request</em>.</div>
+
+<p>{{Compat("javascript.builtins.Error")}}</p>
+</div>
+
+<h2 id="Voir_aussi">Voir aussi</h2>
+
+<ul>
+ <li>{{jsxref("Error.prototype")}}</li>
+ <li>{{jsxref("Instructions/throw", "throw")}}</li>
+ <li>{{jsxref("Instructions/try...catch", "try...catch")}}</li>
+</ul>