throw (JScript) #
Die Anweisung throw
(= werfen) erzeugt einen gezielten Laufzeitfehler. Hierbei wird der Anweisung entweder ein Fehlertext als Parameter mitgegeben, oder eine Fehlervariable die über eine catch-Anweisung „eingefangen“ wurde.
In der Hauptsache wird die throw-Anweisung innerhalb einer catch-Anweisung eingesetzt und wirft einen Fehler, der nicht in der aktuellen catch-Anweisung behandelt werden soll eine Ebene höher.
Syntax #
throw Ausnahme
Beispiel 1 #
Ein Beispiel für die throw-Anweisung.
try
{
x=1;
throw "[Fehler allgemein]"
y=1;
}
catch (e)
{
Ergebnis=e
}
In diesem Beispiel wird nach der Zuweisung der Variable x ein Laufzeitfehler über die throw-Anweisung erzeugt. Da die throw-Anweisung innerhalb eines try-Blocks ausgeführt wird, verzweigt das Script sofort zu der entsprechenden catch-Anweisung. Die Zuweisung der Variablen „y“ erfolgt also niemals.
Innerhalb der catch-Anweisung wird die willkürliche Fehlervariable „e“ benutzt und enthält den Fehlertext der throw-Anweisung die der Ergebnis-Variablen zugewiesen wird.
Über throw kann man also einen gezielten Laufzeitfehler erzeugen.
Beispiel 2 #
Weitergabe eines unbehandelten Fehlers über eine throw-Anweisung.
var
Gestern, Morgen, Heut;
Heut=3;
try
{
try
{
Gestern=Heut-1;
Morgen=Heute+1;
}
catch (e)
{
if (e == "[object Error]")
throw "Unbehandelter Fehler: "+e;
else
Ergebnis=e;
}
}
catch (e)
{
Ergebnis=e;
}
In diesem Beispiel wird im zweiten try-Block durch die Zuweisung der zweiten Variablen ein Fehler ausgelöst, da „Heute“ nicht definiert wurde, aber Bezug darauf genommen wird.
Entsprechend wird zum inneren catch-Block verzweigt. Alle Fehler, außer den Objekt-Errors werden als Text der Ergebnis-Variablen übergeben. Durch den catch-Block sind diese behandelt und erzeugen damit keinen weiteren Laufzeitfehler. Lediglich der Sonderfall eines Object-Errors, also der hier erzeugte Fehler, wird nicht behandelt, denn über die throw-Anweisung wird er „zurückgeworfen“. Die übergeordnete try-Anweisung behandelt dann diesen Fehler und weist diesen direkt 1:1 der Ergebnisvariablen zu.
In der Variablenliste können Sie sehen, dass die Ergebnis-Variable den Wert „Unbehandelter Fehler: [object Error]" hat.
Hinweis
Wenn eine throw-Anweisung einen Laufzeitfehler erzeugt und kein übergeordneter catch-Block diesen Fehler behandelt, schaltet sich bei installiertem Script-Debugger dieser dazwischen und unterbricht das Hauptprogramm.