A RetroSearch Logo

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

Search Query:

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

Error.prototype.stack - JavaScript | MDN

각 JavaScript 엔진마다 고유한 스택 추적 형식을 사용하지만, 높은 수준의 구조는 꽤 일관적입니다. 모든 구현은 스택에서 별도의 줄을 사용하여 각 함수 호출을 나타냅니다. 오류를 직접적으로 일으킨 호출은 맨 위에 배치되고 전체 호출 체인의 시작 호출은 맨 아래에 배치됩니다. 다음은 스택 추적의 몇 가지 예입니다.

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

엔진마다 이 값을 설정하는 시점이 다릅니다. 대부분의 최신 엔진은 Error 객체가 생성될 때 이 값을 설정합니다. 즉, 다음을 사용하여 함수 내에서 전체 호출 스택 정보를 얻을 수 있습니다:

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

오류를 발생시킨 다음 다시 처리할 필요가 없습니다.

V8에서는 비표준 Error.captureStackTrace(), Error.stackTraceLimit 및 Error.prepareStackTrace() API를 사용하여 스택 추적을 사용자 정의할 수 있습니다. 자세한 내용은 V8 문서에서 스택 추적 API를 참조하세요.

스택 프레임은 명시적 함수 호출 이외의 것일 수도 있습니다. 예를 들어 이벤트 리스너, 타임아웃 작업, 프로미스 처리기는 모두 자체 호출 체인을 시작합니다. eval() 및 Function 생성자 호출 내의 소스 코드도 스택에 나타납니다.

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

Firefox에서는 //# sourceURL 지시어를 사용하여 평가 소스의 이름을 지정할 수 있습니다. 자세한 내용은 Firefox 디버그 평가 소스 문서와 //# sourceURL 지시문을 사용하여 eval 스크립트 이름 지정하기 블로그 게시물을 참조하세요.


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