A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Error/stack below:

Error.prototype.stack - JavaScript | MDN

Error.prototype.stack

Nicht standardisiert: Diese Funktion ist nicht standardisiert. Wir raten davon ab, nicht-standardisierte Funktionen auf produktiven Webseiten zu verwenden, da sie nur von bestimmten Browsern unterstützt werden und sich in Zukunft ändern oder entfernt werden können. Unter Umständen kann sie jedoch eine geeignete Option sein, wenn es keine standardisierte Alternative gibt.

Hinweis: Die stack-Eigenschaft wird de facto von allen großen JavaScript-Engines implementiert, und das JavaScript-Standardisierungskomitee plant, sie zu standardisieren. Aufgrund von Implementierungsinkonsistenzen können Sie sich nicht auf den genauen Inhalt des Stack-Strings verlassen, aber Sie können im Allgemeinen davon ausgehen, dass er existiert und für Debugging-Zwecke verwendet werden kann.

Die nicht standardisierte stack-Eigenschaft einer Error-Instanz bietet eine Rückverfolgung, welche Funktionen in welcher Reihenfolge aufgerufen wurden, von welcher Zeile und Datei, und mit welchen Argumenten. Der Stack-String verläuft von den neuesten Aufrufen zu den früheren zurück und führt zurück zum ursprünglichen Aufruf im globalen Kontext.

Wert

Ein String.

Da die stack-Eigenschaft nicht standardisiert ist, unterscheiden sich die Implementierungen, wo sie installiert wird.

Schreibbar ja Aufzählbar nein Konfigurierbar ja Beschreibung

Jede JavaScript-Engine verwendet ihr eigenes Format für Stack-Traces, aber sie sind ziemlich konsistent in ihrer Struktur auf hoher Ebene. Jede Implementierung verwendet eine separate Zeile im Stack, um jeden Funktionsaufruf darzustellen. Der Aufruf, der den Fehler direkt verursacht hat, steht ganz oben, und der Aufruf, der die gesamte Aufrufkette gestartet hat, steht ganz unten. Unten sind einige Beispiele von Stack-Traces:

function foo() {
  bar();
}

function bar() {
  baz();
}

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

foo();
#### JavaScriptCore
baz@filename.js:10:24
bar@filename.js:6:6
foo@filename.js:2:6
global code@filename.js:13:4

#### SpiderMonkey
baz@filename.js:10:15
bar@filename.js:6:3
foo@filename.js:2:3
@filename.js:13:1

#### V8
Error
    at baz (filename.js:10:15)
    at bar (filename.js:6:3)
    at foo (filename.js:2:3)
    at filename.js:13:1

V8 bietet die nicht standardisierte Stack Trace API zur Anpassung des Stack-Traces, einschließlich Error.captureStackTrace(), Error.stackTraceLimit, und Error.prepareStackTrace(). Andere Engines unterstützen diese API in unterschiedlichem Maße.

Verschiedene Engines setzen diesen Wert zu unterschiedlichen Zeiten. Die meisten modernen Engines setzen ihn, wenn das Error-Objekt erstellt wird. Das bedeutet, dass Sie die vollständige Aufruf-Stack-Information innerhalb einer Funktion erhalten können, indem Sie Folgendes verwenden:

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

Ohne einen Fehler werfen und dann abfangen zu müssen.

Stack-Frames können auch andere Dinge als explizite Funktionsaufrufe sein. Zum Beispiel beginnen Event-Listener, Timeout-Jobs und Promise-Handler ihre eigene Aufrufkette. Quellcode innerhalb von eval() und Function-Konstruktoraufrufen erscheint ebenfalls im Stack:

console.log(new Function("return new Error('Function failed')")().stack);
console.log("====");
console.log(eval("new Error('eval failed')").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: Function failed
    at eval (eval at <anonymous> (filename.js:1:13), <anonymous>:1:8)
    at filename.js:1:65
====
Error: eval failed
    at eval (eval at <anonymous> (filename.js:3:13), <anonymous>:1:1)
    at filename.js:3:13

In Firefox können Sie die //# sourceURL-Direktive verwenden, um eine eval-Quelle zu benennen. Siehe die Firefox-Dokumentation Debug eval sources und den Blog-Eintrag Naming eval Scripts with the //# sourceURL Directive für mehr Details.

Beispiele Verwendung der stack-Eigenschaft

Das folgende Skript demonstriert, wie Sie die stack-Eigenschaft verwenden können, um einen Stack-Trace in Ihrem Browserfenster auszugeben. Sie können dies verwenden, um zu überprüfen, wie die Stack-Struktur Ihres Browsers aussieht.

#output {
  white-space: pre;
  font-family: monospace;
}
function trace() {
  throw new Error("trace() failed");
}
function b() {
  trace();
}
function a() {
  b(3, 4, "\n\n", undefined, {});
}
try {
  a("first call, first arg");
} catch (e) {
  document.getElementById("output").textContent = e.stack;
}
Spezifikationen

Nicht Teil eines Standards.

Browser-Kompatibilität Siehe auch

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4