Wie die Java-Sprache kann JavaScript über die throw-Anweisung Ausnahmen auslösen. Im Gegensatz zur Java-Sprache kann JavaScript über die throw-Anweisung alle Arten von Werten auslösen, nicht nur Fehlerobjekte.
Versuchen Sie es{
wirf „Raw Message“;
}catch(message){
console.log(message);//Rohnachricht
console.log(typeof message);//string
}
Versuchen Sie es{
wirf 42;
}catch(code){
console.log(code);//42
console.log(typeof code);//number
}
Wie bei der Java-Sprache wird die Ausnahme schließlich an den Benutzer geworfen, wenn sie nicht von einer Catch-Anweisung abgefangen wird:
Versuchen Sie es{
throw 42;//Fehler wird geworfen: 42
}endlich{
}
Zum Abfangen ausgelöster Ausnahmen verwendet JavaScript auch try/catch/finally-Anweisungen. Die Verwendungsregeln lauten: try ist erforderlich, Catch und Finally sind optionale Anweisungen, aber mindestens eine der Anweisungen „catch“ und „finally“ muss vorkommen.
In der Catch-Anweisung können Sie einen Parameter e (oder einen anderen zulässigen Variablennamen) definieren, um den ausgelösten Ausnahmewert zu speichern. Innerhalb der Catch-Anweisung kann dieser Parameter als lokale Variable verwendet werden. Im Gegensatz zu anderen Variablenverwendungen in JavaScript ist die Parametervariable in der Catch-Anweisung nur innerhalb der Catch-Anweisung gültig (der Gültigkeitsbereich der Variablen ist auf die Catch-Anweisung beschränkt).
Bei „final“-Anweisungen wird der Code in „final“ unabhängig davon ausgeführt, ob in „try“ eine Ausnahme ausgelöst wird. Zu den Details gehören:
1. In try tritt keine Ausnahme auf. Wenn die try-Anweisung ausgeführt wird, wird der Code in „finally“ ausgeführt.
2. In try tritt keine Ausnahme auf, aber wenn der Try-Code aufgrund der Ausführung von Break-, Continue- oder Return-Anweisungen beendet wird, wird der Code in „finally“ ausgeführt.
3. In „try“ tritt eine Ausnahme auf. Nachdem die Ausnahme von der „catch“-Anweisung behandelt wurde, wird der Code in „finally“ ausgeführt.
4. Wenn in try eine Ausnahme auftritt, die Ausnahme jedoch weiterhin nach oben geworfen werden muss, da keine Catch-Anweisung vorhanden ist, wird der Code in „finally“ ausgeführt. Es ist erwähnenswert, dass JavaScript in Abwesenheit einer Catch-Anweisung den Code zunächst in „finally“ ausführt und dann weiterhin eine Ausnahme auslöst.
Wenn im Final-Code eine Break-, Continue- oder Return-Anweisung erscheint, führt JavaScript diese Anweisungen direkt aus, unabhängig von den Break-, Continue- oder Return-Anweisungen, die im Try-Code vorhanden sein können, auch wenn die Catch-Anweisung fehlt verursacht eine Ausnahme. Bei der Meldung verwirft JS auch die Informationen zur Ausnahmemeldung und führt weiterhin die Break-, Continue- oder Return-Anweisungen im Final-Code aus. Wenn im Final-Code auch eine Ausnahme ausgelöst wird, verwirft JavaScript in ähnlicher Weise alle Break-, Continue- oder Return-Anweisungen im Try-Code sowie mögliche Verhaltensweisen bei der Ausnahmeberichterstattung und wirft die Ausnahme nur im Final-Code aus.