Der FoxPro-Kompatible Skriptinterpreter
🔎
Newsletter
Der FoxPro-Kompatible Skriptinterpreter

try

Mit dieser Anweisung können Fehler behandelt werden. Es können mehrere Routinen definiert werden, die unterschiedliche Fehler behandeln.

TRY
  <Program>
 CATCH [TO <ErrorVariable>] [WHEN <Condition>]
   <Routine1>
 [CATCH [TO <ErrorVariable>] [WHEN <Condition>]]
   <Routine2>
 [FINALLY
    <Program>]
ENDTRY

Die WHEN-Condition kann nur auf die ErrorVariable und auf Public-Variablen zugreifen.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
* Dieses Beispiel löst manuell den Fehler 1 - Datei nicht gefunden
* aus, welcher dann von der CATCH-Routine behandelt wird.
LOCAL err
TRY
  open_non_existing_file()
CATCH TO err WHEN err.ErrorNo= 1
  * Behandle nur Fehler mit der
  * Fehlernummer 1 (Datei nicht gefunden)
  ?  err.ErrorNo, err.Message
ENDTRY

FUNCTION open_non_existing_file
  ERROR 1 && Raise Error 1 - File not found
ENDFUNC

1 File does not exist.

THROW

Mit der THROW-Anweisung kann der Inhalt von e genauer gesteuert werden, der für die Evaluierung der WHEN-Klauseln zur Verfügung steht. Anders, als wenn der Fehler mit ERROR ausgelöst wurde (oder durch irgendeinen anderen Fehler), bezieht sich die THROW-Anweisung explizit nur auf TRY...CATCH-Blöcke. Der Standarderrorhandler wird grundsätzlich nicht aufgerufen, wenn THROW ohne TRY...CATCH verwendet wird.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
LOCAL err
TRY
  errfunc()
CATCH TO err
  ? err.UserValue
ENDTRY

FUNCTION errfunc
  THROW 1
ENDFUNC

1