| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Error/stack | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
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 untersttzt werden und sich in Zukunft ndern oder entfernt werden knnen. Unter Umstnden kann sie jedoch eine geeignete Option sein, wenn es keine standardisierte Alternative gibt.
Hinweis:
Die stack-Eigenschaft wird de facto von allen groen JavaScript-Engines implementiert, und das JavaScript-Standardkomitee erwgt, sie zu standardisieren. Aufgrund von Implementierungsinkonsistenzen knnen Sie sich nicht auf den genauen Inhalt des Stack-Strings verlassen, aber Sie knnen im Allgemeinen davon ausgehen, dass er existiert und zu Debugging-Zwecken verwendet werden kann.
Die nicht standardisierte stack-Eigenschaft einer Error-Instanz bietet eine Rckverfolgung, welche Funktionen aufgerufen wurden, in welcher Reihenfolge, von welcher Zeile und Datei und mit welchen Argumenten. Der Stack-String geht von den neuesten Aufrufen zu den frheren zurck und fhrt zurck zum ursprnglichen Aufruf im globalen Bereich.
Ein String.
Da die stack-Eigenschaft nicht standardisiert ist, unterscheiden sich die Implementierungen darin, wo sie installiert ist.
Error.prototype.Error-Instanz mit dem Deskriptor:Eigenschaften von Error.prototype.stack | |
|---|---|
| Schreibbar | ja |
| Aufzhlbar | nein |
| Konfigurierbar | ja |
Jede JavaScript-Engine verwendet ihr eigenes Format fr Stack-Traces, aber sie sind in ihrer Gesamtstruktur ziemlich konsistent. Jede Implementierung verwendet eine separate Zeile im Stack, um jeden Funktionsaufruf darzustellen. Der Aufruf, der direkt den Fehler verursacht hat, steht ganz oben, und der Aufruf, der die gesamte Aufrufkette gestartet hat, steht ganz unten. Nachfolgend einige Beispiele fr 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 der Stack-Trace, einschlielich Error.captureStackTrace(), Error.stackTraceLimit, und Error.prepareStackTrace(). Andere Engines untersttzen diese API in unterschiedlichem Ausma.
Verschiedene Engines setzen diesen Wert zu unterschiedlichen Zeiten. Die meisten modernen Engines setzen ihn, wenn das Error-Objekt erstellt wird. Dies bedeutet, dass Sie die vollstndige Aufrufstack-Information innerhalb einer Funktion erhalten knnen, indem Sie Folgendes verwenden:
function foo() {
console.log(new Error().stack);
}
Ohne einen Fehler werfen und dann abfangen zu mssen.
Stack-Frames knnen auch andere Dinge auer expliziten Funktionsaufrufen sein. Beispielsweise beginnen Event-Listener, Timeout-Jobs und Promise-Handler alle 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 knnen Sie die //# sourceURL-Direktive verwenden, um eine eval-Quelle zu benennen. Siehe die Firefox Debug eval sources Dokumentation.
Das folgende Skript zeigt, wie Sie die stack-Eigenschaft verwenden knnen, um einen Stack-Trace in Ihrem Browserfenster auszugeben. Sie knnen dies verwenden, um die Struktur des Stacks Ihres Browsers zu berprfen.
<div id="output"></div>
#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;
}
Nicht Teil eines Standards.
ErrorObject/FunctionAggregateErrorEvalErrorInternalErrorRangeErrorReferenceErrorSyntaxErrorTypeErrorURIErrorDer Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |