Mozilla's getting a new look. What do you think? https://mzl.la/brandsurvey

Error

Der Error Konstruktor erstellt ein Fehler (Error) Objekt. Instanzen von Error Objekten werden geschmissen (thrown), wenn zur Laufzeit ein Fehler auftritt. Das Error Objekt kann zudem als Basis für benutzerdefinierte Fehler benutzt werden. Weiter unten werden schon eingebaute Fehlertypen beschrieben.

Syntax

new Error([message[, fileName[, lineNumber]]])

Parameter

message
Optional. Für Menschen lesbare Beschreibung des Errors.
fileName
Optional. Der Wert für die fileName Eigenschaft eines erstellten Error Objekts. Der Standardwert ist der Name der Datei, in dem der Quelltext Error() aufgerufen wird.
lineNumber
Optional. Der Wert für die lineNumber Eigenschaft eines erstellten Error Objekts. Der Standardwert ist die Zeilennummer, in dem der Quelltext Error() aufgerufen wird.

Beschreibung

Laufzeitfehler resultieren in einem neu erstellten und geworfenen Error Objekt.

Diese Seite Dokumentiert den Einsatz des Error Objektes und den Einsatz als Konstruktorfunktion. Für eine Liste der Eigenschaften und Methoden, die eine Error Instanz erbt, siehe auf der Seite Error.prototype.

Error Typen

Neben dem generischen Error Konstruktor sind in JavaScript noch sechs weitere Error-Konstruktoren eingebaut. Für benutzerdefinierten Fehlern siehe Statements für Exceptionbehandlung.

EvalError
Erstellt eine Instanz, die einen Fehler repräsentiert, der bei der globalen eval() Funktion auftritt.
InternalError
Erstellt eine Instanz, die einen Fehler repräsentiert, der auftritt, wenn ein interner Fehler in JavaScript auftaucht (z. B. zu viel Rekursion).
RangeError
Erstellt eine Instanz, die einen Fehler repräsentiert, der auftritt, wenn eine nummerische Variable oder ein nummerischer Parameter außerhalb seiner validen Grenzen ist.
ReferenceError
Erstellt eine Instanz, die einen Fehler repräsentiert, der auftritt, wenn eine nicht valide Referenz referenziert werden soll.
SyntaxError
Erstellt eine Instanz, die einen Fehler repräsentiert, der auftritt, wenn die Syntax von  Quellcode, der in der eval() Funktion übergeben wird, nicht richtig ist.
TypeError
Erstellt eine Instanz, die einen Fehler repräsentiert, der auftritt, wenn eine Variable oder ein Parameter einen nicht validen Typen enthält.
URIError
Erstellt ein Instanz, die einen Fehler repräsentiert, der auftritt, wenn die Methode encodeURI() oder decodeURI() nicht valide Parameter übergeben bekommt.

Eigenschaften

Error.prototype
Erlaubt es die Eigenschaften aller Error Instanzen zu verändern.

Methoden

Das globale Error Objekt besitzt keine eigenen Methoden. Stattdessen erbt es einige Methoden durch die Prototypenkette.

Error Instanzen

Alle Error Instanzen und Instanzen von nicht generischen Errors erben von Error.prototype. Wie bei jeder Konstruktorfunktion, kann man den Prototypen des Konstruktors einsetzen, um Eigenschaften oder Methoden bei allen erstellten Instanzen hinzuzufügen.

Eigenschaften

Standard-Eigenschaften

Error.prototype.constructor
Spezifiziert die Funktion, die einen Prototypen einer Instanz erstellt.
Error.prototype.message
Errornachricht.
Error.prototype.name
Errorname.

Vendor-spezifische Erweiterungen

Kein Standard
Diese Funktion entspricht nicht dem Standard und ist nicht Teil der Standardisierung. Diese Funktion darf nicht in Webseiten, die via das Internet zugänglich sind, benutzt werden: Sie wird nicht für alle Nutzer funktionieren. Es kann zu umfangreichen Inkompatibilitäten zwischen verschiedenen Implementierungen kommen und die Funktionsweise oder Eigenschaften könnten in der Zukunft verändert werden.

Microsoft

Error.prototype.description
Errorbeschreibung. Ist das gleiche wie Error.prototype.message
Error.prototype.number
Errornummer.

Mozilla

Error.prototype.fileName
Pfad zu der Datei, die der der Error ausgelöst wurde.
Error.prototype.lineNumber
Zeilennummer in der Datei, in der der Error ausgelöst wurde.
Error.prototype.columnNumber
Spaltennummer in der Zeile, in der der Error ausgelöst wurde.
Error.prototype.stack
Stacktrace.

Methoden

Error.prototype.toSource()
Gibt einen String zurück, der den Quelltext eines spezifischen Error Objektes beinhaltet. Man kann diesen einsetzen, um ein neues Objekt zu erstellen. Überschreibt die Object.prototype.toSource() Methode.
Error.prototype.toString()
Gibt einen String zurück, der das Objekt repräsentiert. Überschreibt die Object.prototype.toString() Methode.

Beispiele

Werfen eines generischen errors

Typischer Weise erstellt man ein Error Objekt mit der intention des mit dem throw Schlüsselwort zu werfen. Man kann den Fehler auffangen indem man ein try...catch Konstrukt benutzt.

try {
  throw new Error('Whoops!');
} catch (e) {
  console.log(e.name + ': ' + e.message);
}

Einen Spezifischen Error behandeln

Man kann sich aussuchen, welche spezifischen Errortypen behandelt werden sollen, indem man die constructor Eigenschaft des Errors abfragt. In modernen JavaScript-Umgebungen kann stattdessen das instanceof Schlüsselwort verwendet werden:

try {
  foo.bar();
} catch (e) {
  if (e instanceof EvalError) {
    console.log(e.name + ': ' + e.message);
  } else if (e instanceof RangeError) {
    console.log(e.name + ': ' + e.message);
  }
  // ... etc
}

Benutzerdefinierte Error Typen

Manchmal möchte man seinen eigenen Error erstellen, der von Error abgeleitet ist. Einen solchen Fehler erzeugt man dann mit throw new MyError() und man kann ihn mit instanceof MyError auf den Typen abfragen. Wie ein solcher Error definiert wird, wird unten demonstriert.

Bemerkung: Das Werfen von MyError wird eine falsche Zeilennummer und einen falschen Dateinamen in Firefox besitzen.

Siehe auch die "What's a good way to extend Error in JavaScript?" Diskussion auf Stackoverflow.

// Erstellt ein neues Objekt, welches vom Error Konstruktor erbt.
function MyError(message) {
  this.name = 'MyError';
  this.message = message || 'Default Message';
  this.stack = (new Error()).stack;
}
MyError.prototype = Object.create(Error.prototype);
MyError.prototype.constructor = MyError;

try {
  throw new MyError();
} catch (e) {
  console.log(e.name);     // 'MyError'
  console.log(e.message);  // 'Default Message'
}

try {
  throw new MyError('custom message');
} catch (e) {
  console.log(e.name);     // 'MyError'
  console.log(e.message);  // 'custom message'
}

Spezifikationen

Spezifikation Status Kommentar
ECMAScript 1st Edition (ECMA-262) Standard Initiale Definition. Implementiert in JavaScript 1.1.
ECMAScript 5.1 (ECMA-262)
Die Definition von 'Error' in dieser Spezifikation.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
Die Definition von 'Error' in dieser Spezifikation.
Standard  
ECMAScript 2017 Draft (ECMA-262)
Die Definition von 'Error' in dieser Spezifikation.
Entwurf  

Browserkompatibilität

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support (Ja) (Ja) (Ja) (Ja) (Ja)
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support (Ja) (Ja) (Ja) (Ja) (Ja) (Ja)

See also

Schlagwörter des Dokuments und Mitwirkende

Schlagwörter: 
 Mitwirkende an dieser Seite: schlagi123, AlexanderFradiani
 Zuletzt aktualisiert von: schlagi123,