RangeError
RangeError
RangeError 객체는 값이 허용된 값의 집합이나 범위에 속하지 않을 때의 오류를 나타냅니다. 숫자 값이 유효 범위를 벗어나는 상황에서 흔히 발생합니다.
본문
RangeError는 값을 인자로 받는 함수에 그 값을 포함하지 않는 범위를 가진 인자로 전달하려 할 때 던져집니다. 대표적인 상황은 다음과 같습니다.
String.prototype.normalize()에 허용된 문자열 값 중 하나가 아닌 값을 전달할 때Array생성자로 불법적인 길이의 배열을 만들려 할 때- 숫자 메서드
Number.prototype.toExponential(),Number.prototype.toFixed(),Number.prototype.toPrecision()에 잘못된 값을 전달할 때
RangeError는 직렬화 가능한 객체이므로 structuredClone()으로 복제하거나 postMessage()로 Worker 사이에서 복사할 수 있습니다. RangeError는 Error의 하위 클래스입니다.
생성자
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— 기타 내장 오류 타입