Error(): Unterschied zwischen den Versionen

Aus Wiki des Deutschsprachige Xbaseentwickler e. V.
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 53: Zeile 53:


XppRt1.DLL
XppRt1.DLL
Error.CH
Error.CH


== Anwendungsbeispiele ==
== Anwendungsbeispiele ==

Version vom 8. Juli 2013, 13:47 Uhr

Allgemeines

Die Funktion Error() liefert ein Objekt der Error-Klasse zurück.

Weshalb benötigt ein Programmierer ein Error-Objekt?

Es ist im ersten Schritt davon auszugehen, dass Alaska selbst beim Auftreten entsprechender Fehler während der Programmlaufzeit auf diesem Wege ein Error-Objekt erzeugt und mit den erforderlichen Informationen beschickt.

Für einen Programmierer kann es sinnvoll sein, in einer entsprechenden Situation ein "eigenes" Error-Objekt zu erzeugen und danach den Standard-Error-Handler aufzurufen.

Wenn z.B. eine angepasste ErrorSys.prg verwendet wird, die ein erweitertes Logging von Fehlern vornimmt, kann auf diesem Weg auch ein Anwendungs-Fehler protokolliert werden.


Syntax

Error():new() => liefert ein neues Error-Objekt, es werden keine Parameter von der Methode :new() erwartet.


Methoden

:new() => <oError> - Die Methode :new() liefert ein neues Error-Objekt zurück. Es kann danach über die Instanzvariablen konfiguriert werden.

:ignoredErrors() => <aErrors> - Die Methode :ignoredErrors() liefert die letzten 16 ignorierten Fehlermeldungen zurück.

Nach dem Aufruf dieser Methode wird die interne Liste gelöscht. Wenn zwischen zwei Aufrufen dieser Methode mehr als 16 ignorierte Fehler aufgetreten sind, werden nur die 16 letzten gemeldet.

:setErrorMode(<nMode>, [<nAction>]) => <nCurrentAction> - Die Methode :setErrorMode() konfiguriert das Verhalten beim Auftreten von Fehlern in verschiedenen Umgebungen. Sie liefert als Ergebnis die aktuelle Einstellung.

Gültige Werte für nMode sind:

  • ERR_MODE_GC - betrifft das Verhalten bei Fehlern im Garbage Collector Thread;
  • ERR_MODE_GUI - betrifft das Verhalten im Event-verarbeitenden Thread

Gültige Werte für nAction sind:

  • ERR_ACTION_FATAL => ein auftretender Fehler für zu einem Abbruch mit XppFatal.log;
  • ERR_ACTION_IGNORE => ein auftretender Fehler wird nach Möglichkeit ignoriert;
  • ERR_ACTION_POPUP => ein auftretender Fehler führt zu einem Pop-Up, das dem Anwender die Möglichkeit einräumt, auf den Fehler zu reagieren


Instanzvariablen

Querverweise

benötigte DLLs bzw. Include-Dateien

XppRt1.DLL

Error.CH

Anwendungsbeispiele

#INCLUDE "Error.CH"
#INCLUDE "Xbp.CH" 

FUNCTION Main()
  Local oError, bErrorBlock
  bErrorBlock := ErrorBlock()
  oError := Error():new()
  oError:args        := {"Peter", "Paul", bErrorBlock}
  oError:canDefault  := .T.
  oError:canRetry    := .T.
  oError:description := "Benutzer-erzeugter Fehler"
  oError:fileName    := "unknown-file.txt"
  oError:genCode     := 7777
  oError:operation   := "Programm-Start"
  oError:osCode      := 5
  oError:severity    := 17
  oError:subCode     := 3
  oError:subSystem   := "Demo"
  oError:thread      := ThreadObject():ThreadID
  oError:tries       := 0
  Eval(bErrorBlock, oError)
  ConfirmBox(, "Fehlerbehandlung beendet", "Information", XBPMB_OK, XBPMB_INFORMATION)
RETURN (.T.)

In diesem Beispiel wird ein Error-Objekt erzeugt und mit verschiedenen Daten beschickt, u.a. der Option, dass bei diesem Fehler ein erneuter Versuch möglich ist (:canRetry := .T.).

Wird auf die Fehlermeldung mit "Retry" geantwortet, greift die Meldung über ConfirmBox(). Andernfalls endet das Programm mit der Ausführung der Eval()-Funktion in Main().


(artikelinarbeit)