Try
Zuletzt geändert: 12.06.2023 05:31

try…catch…finally (JScript) #

Die Anweisung „try…catch…finally“ (=versuchen…fangen…zum Schluss) erlaubt es, auf Fehler in einer strukturierten Art und Weise zu reagieren.

Scriptcode, der einen Laufzeitfehler verursachen kann, wird ein eine try-catch-Anweisung eingekleidet. Tritt innerhalb des try-Blocks ein Laufzeitfehler auf, so wird dieser nicht durch das Laufzeitsystem angezeigt, sondern es wird in den catch-Block verzweigt. Dieser kann nun die genauere Fehlerursache prüfen und darauf reagieren.

Der finally-Block wird, wenn er vorhanden ist, in jedem Fall ausgeführt. Hierbei spielt es keine Rolle, ob in dem try-Block ein Fehler aufgetreten ist oder nicht. Die einzige Ausnahme besteht dann, wenn ein Fehler auftritt, aber gar kein catch-Block vorhanden ist. In diesem Fall wird ein normaler Laufzeitfehler ausgegeben.

Syntax #

try 
  {tryAnweisungen}
catch(Variable)
  {catchAnweisungen}
finally
  {finallyAnweisungen}

Beispiel 1 #

Ein Beispiel für try…catch.

var
  Gestern, Morgen, Heut;

Heut=3;

try
  {
    Gestern=Heut-1;
    Morgen=Heute+1;
  }
catch (e)
  {
    Ergebnis="Fehler bei Zuweisung! Grund: "+e
  }

In diesem Beispiel wird im try-Block eine Zuweisung „Morgen=Heute+1“ durchgeführt. Aufgrund eines Tippfehlers ist aber die Variable „Heute“ nicht definiert. Normalerweise würde in diesem Fall ein Objekt-Fehler gemeldet. Da aber die Anweisung in einem try-Block ausgeführt wird, verzweigt die Ausführung in den catch-Block. Dort wird ein Fehlertext der Ergebnisvariablen zugewiesen.

Der Original-Fehlertext ist in der Variablen „e“ enthalten und wird an die Ergebnisvariable angehängt.

Da der Fehler im try-Block erst in der zweiten Blockzeile aufgetreten ist, wird die Zeile „Gestern=Heut-1“ noch korrekt ausgeführt.

Beispiel 2 #

Ein einfaches Beispiel für try…catch..finally.

var
  Gestern, Morgen, Heut;

Heut=3;

try
  {
    Gestern=Heut-1;
    Morgen=Heute+1;
  }
catch (e)
  {
    Ergebnis="Fehler bei Zuweisung! Grund: "+e
  }
finally
  {
    Heut=1;
  }

Dies ist eine Erweiterung zum ersten Beispiel. Am Ende der Ausführung des try…catch wird der finally-Block ausgeführt. Dieser setzt die Variable „Heut“ in jedem Fall auf den Wert 1. Egal ob im try-Block ein Fehler aufgetreten ist, oder nicht.

Beispiel 3 #

Ein einfaches Beispiel für try…finally.

var
  Gestern, Morgen, Heut;

Heut=3;

try
  {
    Gestern=Heut-1;
    Morgen=Heute+1;
  }
finally
  {
    Heut=1;
  }

Hier wird der finally-Block als einzige Ausnahme nicht ausgeführt. Da im try-Block ein Fehler auftritt, aber kein catch-Block vorhanden ist, wird das Script direkt an der Fehlerstelle abgebrochen und ein Laufzeitfehler angezeigt.