aboutsummaryrefslogtreecommitdiff
path: root/files/ca/web/javascript/referencia/objectes_globals/error/stack
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:41:15 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:41:15 -0500
commit4b1a9203c547c019fc5398082ae19a3f3d4c3efe (patch)
treed4a40e13ceeb9f85479605110a76e7a4d5f3b56b /files/ca/web/javascript/referencia/objectes_globals/error/stack
parent33058f2b292b3a581333bdfb21b8f671898c5060 (diff)
downloadtranslated-content-4b1a9203c547c019fc5398082ae19a3f3d4c3efe.tar.gz
translated-content-4b1a9203c547c019fc5398082ae19a3f3d4c3efe.tar.bz2
translated-content-4b1a9203c547c019fc5398082ae19a3f3d4c3efe.zip
initial commit
Diffstat (limited to 'files/ca/web/javascript/referencia/objectes_globals/error/stack')
-rw-r--r--files/ca/web/javascript/referencia/objectes_globals/error/stack/index.html161
1 files changed, 161 insertions, 0 deletions
diff --git a/files/ca/web/javascript/referencia/objectes_globals/error/stack/index.html b/files/ca/web/javascript/referencia/objectes_globals/error/stack/index.html
new file mode 100644
index 0000000000..aa41949423
--- /dev/null
+++ b/files/ca/web/javascript/referencia/objectes_globals/error/stack/index.html
@@ -0,0 +1,161 @@
+---
+title: Error.prototype.stack
+slug: Web/JavaScript/Referencia/Objectes_globals/Error/Stack
+translation_of: Web/JavaScript/Reference/Global_Objects/Error/Stack
+---
+<div>{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}} {{non-standard_header}}</div>
+
+<h2 id="Resum">Resum</h2>
+
+<p>La propietat no standard <strong><code>stack</code></strong> dels objectes {{jsxref("Error")}} ofereix una traça de quines funcions han estat cridades, en quin ordre, des de quina línia i fitxer, i amb quins arguments. La stack, en forma de string, va de les crides més recent a les més antigues, fins a arribar a la crida original del context global.</p>
+
+<h2 id="Descripció">Descripció</h2>
+
+<p>Cada pas estarà separat per una nova línia, on la primera part de cada línia és el nom de la funció (si no es tracta d'una crida des del context global), seguit per pel símbol arroba (@), la ruta del fitxer (excepte quan la funció és la funció constructora de l'error mentre s'està llençant l'error), un punt i coma, i, si hi ha una ruta de fitxer, el nombre de línia. Fixeu-vos que l'objecte {{jsxref("Error")}} també disposa de les propietats <code>filename</code>, <code>lineNumber</code> i <code>columnNumber</code> de l'error llençat (però no de la traça).</p>
+
+<p>Cal remarcar que aquest és el format utilitzat per Firefox. No hi ha un formateig standard. Tot i així, Safari 6+ i Opera 12- utilitzen un format molt similar. Els navegadors que utilitzen el motor de JavaScript V8 (com ara Chrome, Opera 15+ i el navegador de Android), així com IE10+, d'altra banda, utilitzen un format diferent (vegeu el document de la MSDN <a class="external" href="http://msdn.microsoft.com/en-us/library/windows/apps/hh699850.aspx">error.stack</a>).</p>
+
+<p><strong>Valors dels arguments a la pila</strong>: Abans del ({{bug("744842")}}) de Firefox 14, el nom de la funció anava seguit dels valors dels arguments convertits a string entre parèntesi immediatament abans de l'arroba (@). Un objecte (o un array, etc) apareixeria en la forma convertida <code>"[object Object]"</code>, i en conseqüència no podria ser evaluada de nou en objectes. Si que es poden obtenir els valors escalars (tot i que resulta més senzill utilitzar <code>arguments.callee.caller.arguments</code>, així com es pot trobar el nom de la funció a <code>arguments.callee.caller.name</code>). <code>"undefined"</code> apareix com a <code>"(void 0)"</code>. Cal tenir en compte que si s'han passat arguments de tipus string que continguin caracters com ara <code>"@"</code>, <code>"("</code>, <code>")"</code> (o bé noms de fitxers), resulta força complicat utiltizar-los per a trencar la línia en les diferents parts que la composen. Degut a això, a partir de Firefox 14 això deixa de ser un problema.</p>
+
+<h2 id="Exemple">Exemple</h2>
+
+<p>El següent codi HTML mostra l'ús de la propietat <code>stack</code>.</p>
+
+<pre class="brush: html">&lt;!DOCTYPE HTML&gt;
+&lt;meta charset="UTF-8"&gt;
+&lt;title&gt;Exemple de pila de traça&lt;/title&gt;
+&lt;body&gt;
+&lt;script&gt;
+function trace() {
+ try {
+ throw new Error('myError');
+ }
+ catch(e) {
+ alert(e.stack);
+ }
+}
+function b() {
+ trace();
+}
+function a() {
+ b(3, 4, '\n\n', undefined, {});
+}
+a('primera crida, primerArgument');
+&lt;/script&gt;
+</pre>
+
+<p>Assumint que el codi resideix al fitxer <code>C:\exemple.html</code> en un sistema de fitxers de Windows, aquest generarà un missatge d'alerta amb el text següent:</p>
+
+<p>A partir de Firefox 30 contindrà el nombre de la columna ({{bug("762556")}}):</p>
+
+<pre><samp>trace@file:///C:/exemple.html:9:17
+b@file:///C:/exemple.html:16:13
+a@file:///C:/exemple.html:19:13
+@file:///C:/exemple.html:21:9</samp></pre>
+
+<p>Firefox 14 a Firefox 29:</p>
+
+<pre><samp>trace@file:///C:/exemple.html:9
+b@file:///C:/exemple.html:16
+a@file:///C:/exemple.html:19
+@file:///C:/exemple.html:21</samp></pre>
+
+<p>Per contra, Firefox 13 i versions prèvies produian el següent text:</p>
+
+<pre><samp>Error("myError")@:0
+trace()@file:///C:/exemple.html:9
+b(3,4,"\n\n",(void 0),[object Object])@file:///C:/exemple.html:16
+a("primera crida, primerArgument")@file:///C:/exemple.html:19
+@file:///C:/exemple.html:21</samp></pre>
+
+<h3 id="Pila_de_codi_evaluat">Pila de codi evaluat</h3>
+
+<p>A partir de Firefox 30 {{geckoRelease("30")}}, la pila d'error pertanyent a codi dins de crides a <code>Function()</code> i <code>eval()</code> conté informació més detallada sobre la línia i la columna que ha produït l'error dins aquestes crides. Les crides a funcions s'indiquen amb <code>"&gt; Function"</code> i les crides a eval amb <code>"&gt; eval"</code>. Vegeu {{bug("332176")}}.</p>
+
+<pre class="brush: js">try {
+ new Function('throw new Error()')();
+} catch (e) {
+ console.log(e.stack);
+}
+
+// anonymous@file:///C:/exemple.html line 7 &gt; Function:1:1
+// @file:///C:/example.html:7:6
+
+
+try {
+ eval("eval('FAIL')");
+} catch (x) {
+ console.log(x.stack);
+}
+
+// @file:///C:/exemple.html line 7 &gt; eval line 1 &gt; eval:1:1
+// @file:///C:/exemple.html line 7 &gt; eval:1:1
+// @file:///C:/exemple.html:7:6
+</pre>
+
+<p>També podeu utilitzar la directiva <code>//# sourceURL</code> per a donar nom a codi eval. Vegeu també <a href="/en-US/docs/Tools/Debugger/How_to/Debug_eval_sources">Depurar codi eval</a> als documents de <a href="/en-US/docs/Tools/Debugger">Depurar</a> així com en aquesta <a href="http://fitzgeraldnick.com/weblog/59/">entrada d'un bloc</a>.</p>
+
+<h2 id="Especificacions">Especificacions</h2>
+
+<p>No forma part de cap especificació. No és standard.</p>
+
+<h2 id="Compatibilitat_amb_navegadors">Compatibilitat amb navegadors</h2>
+
+<div>{{CompatibilityTable}}</div>
+
+<div id="compat-desktop">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>Característica</th>
+ <th>Chrome</th>
+ <th>Firefox (Gecko)</th>
+ <th>Internet Explorer</th>
+ <th>Opera</th>
+ <th>Safari</th>
+ </tr>
+ <tr>
+ <td>Suport bàsic</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatIE("10")}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatSafari("6")}}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<div id="compat-mobile">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>Característica</th>
+ <th>Android</th>
+ <th>Chrome for Android</th>
+ <th>Firefox Mobile (Gecko)</th>
+ <th>IE Mobile</th>
+ <th>Opera Mobile</th>
+ <th>Safari Mobile</th>
+ </tr>
+ <tr>
+ <td>Suport bàsic</td>
+ <td>Android 4 (potser Android 3, però en cap cas Android 2)</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatSafari("6")}}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<h2 id="Vegeu_també">Vegeu també</h2>
+
+<ul>
+ <li><a href="/en-US/docs/Components.stack">Components.stack</a></li>
+ <li>Projectes externs: <a class="link-https" href="https://github.com/csnover/TraceKit/">TraceKit</a> i<a class="link-https" href="https://github.com/eriwen/javascript-stacktrace">javascript-stacktrace</a></li>
+ <li>MSDN: documents <a class="external" href="http://msdn.microsoft.com/en-us/library/windows/apps/hh699850.aspx" title="http://msdn.microsoft.com/en-us/library/windows/apps/hh699850.aspx">error.stack</a></li>
+ <li><a href="https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi">Un cop d'ull a la API de traça de pila del motor JavaScript V8</a></li>
+</ul>