Signatur
Beschreibung
RangeError ist ein eingebauter Fehlertyp, der geworfen wird, wenn ein Wert nicht innerhalb der erlaubten Menge oder des erlaubten Bereichs liegt. Typische Auslöser sind: eine negative oder zu große Array-Länge (new Array(-1)), ungültige Argumente für numerische Methoden wie Number.prototype.toFixed() oder Number.prototype.toPrecision(), sowie eine zu große Rekursionstiefe (Stack Overflow).
Eigener Code kann RangeError auch manuell werfen (throw new RangeError('...')), wenn eine Funktion Eingaben erwartet, die innerhalb eines bestimmten Bereichs liegen müssen – beispielsweise ein Prozentwert zwischen 0 und 100 oder ein gültiger Monat (1–12).
RangeError erbt von Error und besitzt dieselben Eigenschaften: message, name (immer 'RangeError'), stack und optional cause. Er lässt sich mit instanceof RangeError oder instanceof Error prüfen, was beim gezielten Abfangen in catch-Blöcken nützlich ist.
Im Gegensatz zu TypeError (falscher Typ) beschreibt RangeError explizit ein Wertebereich-Problem: Der Typ ist korrekt, aber der konkrete Wert ist unzulässig.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $message | string | "" | Menschenlesbare Beschreibung des Fehlers. Wird als error.message gespeichert. |
| $options | { cause?: any } | Optionales Objekt mit einer cause-Eigenschaft, die den ursprünglichen Fehler oder Grund enthält. Wird als error.cause gespeichert (ES2022+). |
Rückgabewert
RangeError-Instanz mit den angegebenen Eigenschaften.Beispiele
Eingebauter RangeError durch ungültige Array-Länge
try {
const arr = new Array(-1);
} catch (e) {
console.log(e instanceof RangeError); // true
console.log(e.name); // "RangeError"
console.log(e.message); // "Invalid array length"
}
Manuell geworfener RangeError zur Eingabe-Validierung
const setMonth = (month) => {
if (month < 1 || month > 12) {
throw new RangeError(`Ungültiger Monat: ${month}. Erwartet: 1–12.`);
}
return month;
};
try {
setMonth(15);
} catch (e) {
if (e instanceof RangeError) {
console.error('Bereichsfehler:', e.message);
}
}
RangeError mit cause (ES2022)
const validatePercent = (value) => {
if (value < 0 || value > 100) {
throw new RangeError('Prozentwert außerhalb des gültigen Bereichs.', {
cause: { received: value, expected: '0–100' }
});
}
return value;
};
try {
validatePercent(110);
} catch (e) {
console.log(e.message); // Prozentwert außerhalb des gültigen Bereichs.
console.log(e.cause); // { received: 110, expected: '0–100' }
}
// Wichtig · Fallstricke
Häufige eingebaute Auslöser:
new Array(4294967296)– Länge überschreitet den maximalen Wert (2³²-1).(1.5).toFixed(200)– Argument außerhalb des erlaubten Bereichs (0–100).(123.456).toPrecision(500)– Präzision außerhalb des erlaubten Bereichs (1–100).- Unendliche Rekursion – führt ebenfalls zu einem
RangeErrormit dem Hinweis Maximum call stack size exceeded.
Subklassen: RangeError kann mit class MyError extends RangeError erweitert werden, um domänenspezifische Bereichsfehler zu modellieren.
Kompatibilität: Die cause-Option im Konstruktor ist ab ES2022 verfügbar und wird von allen modernen Browsern unterstützt, jedoch nicht in sehr alten Umgebungen (z. B. IE11).