[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Statements/throw [Back]  [Original]

throw - JavaScript | MDN

Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.

View in English Always switch to English

throw

Baseline Weitgehend verfgbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit Juli 2015 browserbergreifend verfgbar.

Die throw-Anweisung lst eine benutzerdefinierte Ausnahme aus. Die Ausfhrung der aktuellen Funktion wird gestoppt (die Anweisungen nach throw werden nicht ausgefhrt) und die Kontrolle wird an den ersten catch-Block im Aufrufstapel bergeben. Wenn kein catch-Block unter den aufrufenden Funktionen existiert, wird das Programm beendet.

In diesem Artikel

Probieren Sie es aus

function getRectArea(width, height) {
  if (isNaN(width) || isNaN(height)) {
    throw new Error("Parameter is not a number!");
  }
}

try {
  getRectArea(3, "A");
} catch (e) {
  console.error(e);
  // Expected output: Error: Parameter is not a number!
}

Syntax

js
throw expression;
expression

Der Ausdruck, der geworfen werden soll.

Beschreibung

Die throw-Anweisung ist in allen Kontexten gltig, in denen Anweisungen verwendet werden knnen. Ihre Ausfhrung erzeugt eine Ausnahme, die durch den Aufrufstapel dringt. Weitere Informationen zum Fehler-Bubbling und zur Fehlerbehandlung finden Sie unter Ablaufsteuerung und Fehlerbehandlung.

Das throw-Schlsselwort kann von jeder Art von Ausdruck gefolgt werden, zum Beispiel:

js
throw error; // Throws a previously defined value (e.g. within a catch block)
throw new Error("Required"); // Throws a new Error object

In der Praxis sollte die von Ihnen geworfene Ausnahme immer ein Error-Objekt oder eine Instanz einer Error-Unterklasse wie z.B. RangeError sein. Dies liegt daran, dass Code, der den Fehler auffngt, mglicherweise erwartet, dass bestimmte Eigenschaften wie message im aufgefangenen Wert vorhanden sind. Web-APIs werfen beispielsweise typischerweise DOMException-Instanzen, die von Error.prototype erben.

Automatische Semikolon-Einfgung

Die Syntax verbietet Zeilenumbrche zwischen dem throw-Schlsselwort und dem zu werfenden Ausdruck.

js
throw
new Error();

Der obige Code wird durch die automatische Semikolon-Einfgung (ASI) umgewandelt in:

js
throw;
new Error();

Dies ist ungltiger Code, da im Gegensatz zu return throw von einem Ausdruck gefolgt werden muss.

Um dieses Problem zu vermeiden (um ASI zu verhindern), knnten Sie Klammern verwenden:

js
throw (
  new Error()
);

Beispiele

Werfen eines benutzerdefinierten Fehlers

Dieses Beispiel definiert eine Funktion, die einen TypeError wirft, wenn die Eingabe nicht vom erwarteten Typ ist.

js
function isNumeric(x) {
  return ["number", "bigint"].includes(typeof x);
}

function sum(...values) {
  if (!values.every(isNumeric)) {
    throw new TypeError("Can only add numbers");
  }
  return values.reduce((a, b) => a + b);
}

console.log(sum(1, 2, 3)); // 6
try {
  sum("1", "2");
} catch (e) {
  console.error(e); // TypeError: Can only add numbers
}

Werfen eines vorhandenen Objekts

Dieses Beispiel ruft eine asynchrone Funktion, die auf Rckrufe basiert, auf und wirft einen Fehler, wenn der Rckruf einen Fehler erhlt.

js
readFile("foo.txt", (err, data) => {
  if (err) {
    throw err;
  }
  console.log(data);
});

Fehler, die auf diese Weise geworfen werden, knnen vom Aufrufer nicht abgefangen werden und fhren zum Absturz des Programms, es sei denn, (a) die readFile-Funktion fngt den Fehler selbst ab oder (b) das Programm luft in einem Kontext, der Top-Level-Fehler auffngt. Sie knnen Fehler natrlicher handhaben, indem Sie den Promise()-Konstruktor verwenden.

js
function readFilePromise(path) {
  return new Promise((resolve, reject) => {
    readFile(path, (err, data) => {
      if (err) {
        reject(err);
      }
      resolve(data);
    });
  });
}

try {
  const data = await readFilePromise("foo.txt");
  console.log(data);
} catch (err) {
  console.error(err);
}

Spezifikationen

Spezifikation
ECMAScript 2027 LanguageSpecification
# sec-throw-statement

Browser-Kompatibilitt

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page