Signatur
Beschreibung
Die schreibgeschützte Eigenschaft message einer DOMException enthält eine Zeichenkette mit einer Beschreibung des Fehlers. Sie ergänzt die Eigenschaft name, die den Fehlertyp maschinenlesbar angibt (z. B. "AbortError", "NotAllowedError" oder "QuotaExceededError").
Wird eine DOMException vom Browser ausgelöst, legt die jeweilige Engine den Text fest. Er ist daher nicht standardisiert und unterscheidet sich zwischen Chrome, Firefox und Safari sowie zwischen Versionen. Erzeugt man die Ausnahme selbst mit new DOMException(message, name), entspricht message genau dem ersten Argument (Standard: leere Zeichenkette).
In der Praxis eignet sich message für Logs, Debugging-Ausgaben und Fehlerberichte. Für Programmlogik, also für die Frage „welcher Fehler ist aufgetreten?“, sollte man immer name prüfen und nicht den Text von message.
Rückgabewert
"".Beispiele
Eigene DOMException erzeugen und message auslesen
const err = new DOMException('Upload wurde vom Benutzer abgebrochen', 'AbortError');
console.log(err.name); // Fehlertyp
console.log(err.message); // Beschreibung
console.log(String(err)); // name + message kombiniert
Abgebrochenen fetch-Aufruf protokollieren
const controller = new AbortController();
setTimeout(() => controller.abort(), 10);
try {
await fetch('https://example.com/grosse-datei', { signal: controller.signal });
} catch (err) {
if (err instanceof DOMException && err.name === 'AbortError') {
// Logik über name, message nur fürs Logging
console.warn(`Anfrage abgebrochen: ${err.message}`);
} else {
throw err;
}
}
Fehler bei ungültigem CSS-Selektor
try {
document.querySelector('div[');
} catch (err) {
console.log(err.name);
console.log(err.message);
}
Standardwert ohne Nachricht
const leer = new DOMException();
console.log(JSON.stringify(leer.message));
console.log(leer.name);
// Wichtig · Fallstricke
- Text nicht vergleichen: Der Inhalt von
messagehängt vom Browser ab und kann lokalisiert sein oder sich ändern. Für Fallunterscheidungen immererr.nameverwenden. - Schreibgeschützt:
messageist ein Getter auf dem Prototyp. Eine Zuweisung wieerr.message = '...'ändert den Wert nicht und löst im Strict Mode einenTypeErroraus. - Keine Nutzereingaben ungeprüft anzeigen: Meldungen können Teile von Eingaben enthalten, etwa Selektoren. Beim Ausgeben im DOM
textContentstattinnerHTMLverwenden, damit kein XSS entsteht. - Seit neueren Spezifikationen erbt
DOMExceptionvonError.prototype. Daher funktionierenerr instanceof ErrorundtoString()in allen modernen Browsern. In Node.js istDOMExceptionab Version 17 global verfügbar.