Start · Sprachen · JavaScript · Referenz · RangeError

RangeError

Klasse

Signalisiert, dass ein Wert außerhalb des zulässigen Wertebereichs liegt – z. B. eine ungültige Array-Länge oder ein unerlaubtes Argument.

seit JavaScript ES3 Kategorie: core

Signatur

class RangeError extends Error

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

Typ
RangeError
Beschreibung
Eine neue 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"
}
true RangeError 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);
  }
}
Bereichsfehler: Ungültiger Monat: 15. Erwartet: 1–12.

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' }
}
Prozentwert außerhalb des gültigen Bereichs. { 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 RangeError mit 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).