This page was translated from English by the community. Learn more and join the MDN Web Docs community.

View in English Always switch to English

Error: cause

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2021년 9월.

>

Error 인스턴스의 cause 데이터 속성은 오류의 구체적인 원래 원인을 나타냅니다.

예외를 잡아서 다시 예외를 발생시킬 때 원래 발생한 오류에 접근 할 수 있으면서 보다 구체적인 혹은 유용한 에러 메시지를 추가할때 사용합니다.

options.cause 인자의 Error() 생성자에 전달되는 값입니다. 존재하지 않을 수도 있습니다.

Property attributes of Error: cause
쓰기 가능가능
열거 가능불가능
설정 가능가능

설명

값은 어떤 타입이든 가능합니다. catch문의 변수 역시 Error라고 확신할 수 없는 것과 마찬가지로 여러분이 처리할 오류의 causeError가 있다고 가정하지 마시기 바랍니다. 아래의 예제 "오류 원인으로 구조화된 데이터 제공"는 의도적으로 오류가 아닌 것을 cause로 제공하는 경우를 보여줍니다.

예제

>

cause와 함께 오류 재발생시키기

오류를 발견하고 새 메시지로 다시 던지는 것이 유용할 수 있습니다. 이 경우 그림과 같이 새 Error에 대한 원래 오류를 생성자에 전달해야 합니다.

js
try {
  connectToDatabase();
} catch (err) {
  throw new Error("Connecting to database failed.", { cause: err });
}

보다 자세한 예제는 Error > Differentiate between similar errors를 참조하세요.

오류 원인으로 구조화된 데이터 제공

사람을 위해 쓰인 오류 메시지는 기계 구문 분석에는 적합하지 않을 수 있습니다. 왜냐하면 기계 구문 분석은 단어 변경이나 구두점 변경으로도 기존 분석이 제대로 동작하지 않을 수 있기 때문입니다. 그래서 함수에서 오류를 발생시킬 때, 사람이 읽을 수 있는 오류 메시지의 대안으로 기계 구문 분석을 위해 구조화된 데이터로 원인을 제공할 수 있습니다.

js
function makeRSA(p, q) {
  if (!Number.isInteger(p) || !Number.isInteger(q)) {
    throw new Error("RSA key generation requires integer inputs.", {
      cause: { code: "NonInteger", values: [p, q] },
    });
  }
  if (!areCoprime(p, q)) {
    throw new Error("RSA key generation requires two co-prime integers.", {
      cause: { code: "NonCoprime", values: [p, q] },
    });
  }
  // rsa algorithm…
}

명세

Specification
ECMAScript® 2026 Language Specification>
# sec-installerrorcause>

브라우저 호환성

같이 보기