Throw
Zuletzt geändert: 12.06.2023 05:31

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.