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

Error : proprit stack - JavaScript | MDN

Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.

View in English Always switch to English

Error : proprit stack

Non standard: Cette fonctionnalit n'est pas standardise. Nous dconseillons d'utiliser des fonctionnalits non standard en production, car leur prise en charge par les navigateurs est limite, et elles peuvent tre modifies ou supprimes. Toutefois, elles peuvent constituer une alternative approprie dans certains cas o aucune option standard n'existe.

Note : La proprit stack est de facto implmente par tous les principaux moteurs JavaScript, et le comit de standardisation JavaScript envisage de la standardiser (angl.). Vous ne pouvez pas vous fier au contenu prcis de la chane de la pile cause des incohrences d'implmentation, mais vous pouvez gnralement supposer qu'elle existe et l'utiliser des fins de dbogage.

La proprit non standard stack d'une instance de Error fournit une trace des fonctions appeles, dans quel ordre, depuis quelle ligne et quel fichier, et avec quels arguments. La chane de la pile va des appels les plus rcents aux plus anciens, jusqu' l'appel initial dans la porte globale.

Dans cet article

Valeur

Une chane de caractres.

Comme la proprit stack n'est pas standard, les implmentations diffrent quant l'endroit o elle est installe.

  • Sous Firefox, c'est une proprit d'accesseur sur Error.prototype.
  • Sous Chrome et Safari, c'est une proprit de donne sur chaque instance d'Error, avec le descripteur :
Attributs de Error : proprit stack
crivableOui
numrableNon
ConfigurableOui

Description

Chaque moteur JavaScript utilise son propre format pour les traces de pile, mais ils sont assez cohrents dans leur structure gnrale. Chaque implmentation utilise une ligne distincte dans la pile pour reprsenter chaque appel de fonction. L'appel qui a directement caus l'erreur est plac en haut, et l'appel qui a dmarr toute la chane d'appels est plac en bas. Voici quelques exemples de traces de pile :

js
function toto() {
  tata();
}

function tata() {
  truc();
}

function truc() {
  console.log(new Error().stack);
}

toto();
#### JavaScriptCore
truc@filename.js:10:24
tata@filename.js:6:6
toto@filename.js:2:6
global code@filename.js:13:4

#### SpiderMonkey
truc@filename.js:10:15
tata@filename.js:6:3
toto@filename.js:2:3
@filename.js:13:1

#### V8
Error
    at truc (filename.js:10:15)
    at tata (filename.js:6:3)
    at toto (filename.js:2:3)
    at filename.js:13:1

V8 fournit l'API de trace de pile (angl.) non standard pour personnaliser la trace de pile, incluant Error.captureStackTrace(), Error.stackTraceLimit et Error.prepareStackTrace(). D'autres moteurs prennent en charge cette API des degrs divers.

Diffrents moteurs dfinissent cette valeur des moments diffrents. La plupart des moteurs modernes la dfinissent lors de la cration de l'objet Error. Cela signifie que vous pouvez obtenir la pile complte d'appels dans une fonction en utilisant ce qui suit :

js
function toto() {
  console.log(new Error().stack);
}

Sans avoir lever une erreur puis l'intercepter.

Les trames de pile peuvent aussi provenir d'autres lments que des appels de fonction explicites. Par exemple, les gestionnaires d'vnements, les tches temporises et les gestionnaires de promesses dmarrent tous leur propre chane d'appels. Le code source l'intrieur des appels eval() et au constructeur Function apparat aussi dans la pile :

js
console.log(new Function("return new Error('chec de la fonction')")().stack);
console.log("====");
console.log(eval(`new Error("chec de l'valuation")`).stack);
#### JavaScriptCore
anonymous@
global code@filename.js:1:65
====
eval code@
eval@[native code]
global code@filename.js:3:17

#### SpiderMonkey
anonymous@filename.js line 1 > Function:1:8
@filename.js:1:65

====
@filename.js line 3 > eval:1:1
@filename.js:3:13

#### V8
Error: chec de la fonction
    at eval (eval at <anonymous> (filename.js:1:13), <anonymous>:1:8)
    at filename.js:1:65
====
Error: chec de l'valuation
    at eval (eval at <anonymous> (filename.js:3:13), <anonymous>:1:1)
    at filename.js:3:13

Dans Firefox, vous pouvez utiliser la directive //# sourceURL pour nommer une source d'valuation. Voir la documentation Firefox Dboguer des sources values (angl.).

Exemples

Utiliser la proprit stack

Le script suivant montre comment utiliser la proprit stack pour afficher une trace de pile dans la fentre de votre navigateur. Vous pouvez l'utiliser pour vrifier quoi ressemble la structure de pile de votre navigateur.

js
function trace() {
  throw new Error("chec de trace()");
}
function b() {
  trace();
}
function a() {
  b(3, 4, "\n\n", undefined, {});
}
try {
  a("premier appel, premier argument");
} catch (e) {
  document.getElementById("output").textContent = e.stack;
}

Spcifications

Ne fait partie d'aucune spcification.

Compatibilit des navigateurs

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page