Zum Hauptinhalt springen

trysub

trysub

Ausführbar von Clients mit grafischer Oberfläche Ausführbar vom Server Ausführbar von Clients mit Programmierschnittstelle Ausführbar von der Web-Schnittstelle Ausführbar vom Druckprozessor Ausführbar von der ODBC-Schnittstelle Ausführbar vom SOA-Service

Beginn der Ausnahmebehandlung

Details

Das try-Konstrukt wirkt sich nicht auf aufgerufene Funktionen aus. Wird innerhalb einer aufgerufenen Funktion der globale Fehlerwert gesetzt (siehe ErrSet ()), wirkt sich das erst bei der Rückkehr in die aufrufende Funktion aus. Wird zwischenzeitlich der globale Fehlerwert zurück gesetzt, wird die Verarbeitung fortgesetzt. Soll auch innerhalb der aufgerufenen Funktion eine Ausnahmebehandlung vorgenommen werden, muss auch hier ein try-Block definiert werden.

Soll die Verarbeitung auch dann unterbrochen werden, wenn in einer aufgerufenen Funktion der globale Fehlerwert gesetzt wird, muss das trysub-Konstrukt verwendet werden. Die aufgerufene Funktion wird dann im Fehlerfall unterbrochen. Der Funktionsaufruf kehrt in die aufrufende Funktion zurück und verlässt den trysub-Block. Die Funktion, in der der Fehler aufgetreten ist, kann mit der Anweisung ErrThrowProc () ermittelt werden. Die Fehlerverarbeitung kann vollständig in einer Funktion erfolgen.

Beispiel:

sub function1
{
RecRead(..., _RecLock);
...
function2();
RecReplace(..., _RecUnlock);
}

main
{
trysub
{
function1();
...
}

if (ErrGet() != _ErrOk)
{
// Fehler aufgetreten
tErrProc # ErrThrowProc();
...
}
}

Kann der Datensatz nicht gesperrt oder nicht zurückgeschrieben werden, wird der trysub-Block verlassen und die aufrufende Funktion bei der Fehlerbehandlung fortgesetzt. Auch bei tieferer Verschachtelung der Funktionsaufrufe, bleibt der trysub-Block aktiv.

Befindet sich in einer aufgerufenen Funktion ein eigener try-Block, wird die dort implementierte Fehlerbehandlung durchgeführt.

Für das Verlassen des trysub-Blocks, sowie die Verarbeitung von Fehlern, gelten die gleichen Funktionen und Regeln, wie beim try-Block.