RangeError

RangeError

RangeError 객체는 값이 허용된 값의 집합이나 범위에 속하지 않을 때의 오류를 나타냅니다. 숫자 값이 유효 범위를 벗어나는 상황에서 흔히 발생합니다.

출처: RangeError - JavaScript | MDN

본문

RangeError는 값을 인자로 받는 함수에 그 값을 포함하지 않는 범위를 가진 인자로 전달하려 할 때 던져집니다. 대표적인 상황은 다음과 같습니다.

  • String.prototype.normalize()에 허용된 문자열 값 중 하나가 아닌 값을 전달할 때
  • Array 생성자로 불법적인 길이의 배열을 만들려 할 때
  • 숫자 메서드 Number.prototype.toExponential(), Number.prototype.toFixed(), Number.prototype.toPrecision()에 잘못된 값을 전달할 때

RangeError는 직렬화 가능한 객체이므로 structuredClone()으로 복제하거나 postMessage()로 Worker 사이에서 복사할 수 있습니다. RangeErrorError의 하위 클래스입니다.

생성자

  • RangeError() — 새 RangeError 객체를 만듭니다.

인스턴스 속성

부모 Error의 인스턴스 속성도 상속합니다. RangeError.prototype에 정의되어 모든 인스턴스가 공유하는 속성: constructor, name(오류 타입의 이름, 초기 값은 "RangeError").

인스턴스 메서드

부모 Error의 인스턴스 메서드를 상속합니다.

예제

숫자 값에 RangeError 사용 — 아래 함수는 인자가 -500과 500 사이가 아니면 RangeError를 던집니다.

function check(n) {
  if (!(n >= -500 && n <= 500)) {
    throw new RangeError("The argument must be between -500 and 500.");
  }
}

try {
  check(2000);
} catch (error) {
  if (error instanceof RangeError) {
    // Handle the error
  }
}

비숫자 값에 RangeError 사용 — 허용된 열거 값이 아닐 때도 RangeError를 던질 수 있습니다.

function check(value) {
  if (!["apple", "banana", "carrot"].includes(value)) {
    throw new RangeError(
      'The argument must be an "apple", "banana", or "carrot".',
    );
  }
}

try {
  check("cabbage");
} catch (error) {
  if (error instanceof RangeError) {
    // Handle the error
  }
}

더 알아보기

  • Error — 모든 오류 타입의 기본 클래스
  • TypeError, ReferenceError, SyntaxError, URIError, EvalError — 기타 내장 오류 타입