TurboPL Referenz

try...except...finally Kommando

Top  Previous  Next

Syntax

try
       ..Programmcode
except
       ..Fehlerbehandlung
[finally]
       ..Code, der immer ausgeführt wird
end;

Erklärung

Wenn im Programmcode zwischen try und except ein Laufzeitfehler auftritt, wird dieser Programmblock sofort verlassen und der Code für die Fehlerbehandlung zwischen except und end angesprungen. In diesem Block kann man auf die Fehlervariable Error zugreifen, welche einen Fehlercode und eine Beschreibung enthält. Der Einsatz von finally ist optional. Der zwischen finally und end definierte Code wird unabhängig davon ausgeführt, ob nach try ein Fehler aufgetreten ist und mit except abgefangen wurde. Hier stehen also Befehle, die unter keinen Umständen ausgelassen werden dürfen. Typischerweise werden hier gesetzte Sperren aufgehoben (siehe Beispiel zu EditOn).

Beispiel

Hier wird eine Zahl durch eine andere dividiert, die eventuell auch 0 sein könnte. Um diesen Fall abzufangen, wird eine spezielle Fehlerbehandlung definiert.  Weitere Fehler, die beim Lesen oder Schreiben in die Tabelle auftreten können, werden gemeldet und die Prozedur dann abgebrochen.

vardef a, b: Integer;
try
       a := TABELLE.Feld1;
       b := TABELLE.Feld2;
       a := a div b;
       EditRec(TABELLE);
       TABELLE.Feld1 := a;
       PostRec(TABELLE);
except
       if Error.Nummer = 178
               ..Division durch Null
               a := 0;
       else
               Message(Error.Meldung)
               exit;
       end;
end;