PPL6-Icon Patrick's Programming Library Version 6.4.21 - Dokumentation
Fehlerbehandlung

Ausführliche Beschreibung

PPL verwaltet Fehler in internen Datenstrukturen, auf die mit einer Reihe von Befehlen zugegriffen werden kann. Es ist sichergestellt, dass in einer Umgebung mit mehreren Threads jeder Thread seinen eigenen Fehlercode verwaltet, ohne dass sich der Anwender darum kümmern muss.

Funktionen

Fehler setzen

Mit folgenden Befehlen kann ein Fehler gesetzt werden:

Fehler auslesen

Fehler im Stack sichern

In manchen Fällen ist es notwendig einen zuvor aufgetretenen Fehler zwischenzuspeichern und später wieder herzustellen. Dazu gibt es folgende Funktionen:

Fehler in einer Datenstruktur speichern

Fehler des Betriebssystems in einen PPL-Fehler umwandeln

Werden Systemfunktionen direkt aufgerufen, die im Fehlerfall die errno-Variable setzen, kann diese mit der Funktion ppl6::TranslateErrno(int e) dieser Wert in einen PPL-Fehlercode umgewandelt werden.

Siehe auch
ppl6::TranslateErrno(int e)
ppl6::SetErrorFromErrno(char *msg=NULL, ...)

Eigene Fehlercodes hinzufügen

PPL beansprucht die Fehlercodes 0-9999 für sich selbst. Alle Fehlercodes darüber stehen der Anwendung zur Verfügung. Damit die Fehlerfunktionen auch für Fehlercodes > 9999 die entsprechenden Fehlertexte ausgeben können, müssen entsprechende Routinen in das System eingeklinkt werden. Diese geschicht mittels der folgenden Funktion:

Funktionen

pplint32 ppl6::AttachErrorHandler (const pplchar *geterrorfunction(pplint32 code), pplint32 first, pplint32 last)
 Routine zur Ausgabe von Fehlertexten hinzufügen. Mehr ...
 
void ppl6::ClearError (PPL_ERROR *e)
 gespeicherten Fehler löschen Mehr ...
 
int ppl6::DisplayError ()
 Zeigt den zuletzt aufgetretenen Fehler in einem Fenster an. Mehr ...
 
CString ppl6::Error ()
 Speichert den letzten aufgetretenen Fehler in einem String. Mehr ...
 
void ppl6::Error2String (CString &str)
 Speichert den letzten aufgetretenen Fehler in einem String. Mehr ...
 
CString ppl6::Error2String ()
 Speichert den letzten aufgetretenen Fehler in einem String. Mehr ...
 
void ppl6::ExtendError (ppluint32 errorcode)
 Fehler wird erweitert. Mehr ...
 
const char * ppl6::GetError ()
 Liefert den Fehlertext zum letzten aufgetretenen Fehlercode zurück. Mehr ...
 
const char * ppl6::GetError (pplint32 code)
 Liefert den Fehlertext zu einem bestimmten Code zurück. Mehr ...
 
pplint32 ppl6::GetErrorCode ()
 Liefert den Fehlercode des zuletzt aufgetretenen Fehlers zurück. Mehr ...
 
const char * ppl6::GetExtendedError ()
 Liefert zusätzlichen Fehlertext zurück. Mehr ...
 
pplint32 ppl6::GetSubError ()
 Liefert den zusätzlichen Fehlercode des zuletzt aufgetretenen Fehlers zurück. Mehr ...
 
void ppl6::PrintError ()
 Gibt den letzten aufgetretenen Fehler auf STDOUT aus. Mehr ...
 
void ppl6::PrintPFPErrors ()
 Alle PPL-Fehlermeldungen auf stdout ausgeben. Mehr ...
 
void ppl6::PushError ()
 Der zuletzt aufgetretene Fehler wird auf den Stack geschriebenMit diesem Befehl wird der zuletzt aufgetretene Fehler für den aktuellen Thread auf einen internen Stack geschrieben und somit für eine spätere Verwendung gespeichert. Nach einem PushError(); muß immer ein PopError(); folgen, damit der Eintrag wieder aus dem Stack gelöscht wird. Mehr ...
 
void ppl6::RestoreError (PPL_ERROR *e, bool clear)
 gespeicherten Fehler wiederherstellen Mehr ...
 
void ppl6::SetError (ppluint32 errorcode)
 Setzt einen Fehler. Mehr ...
 
void ppl6::SetError (ppluint32 errorcode, const char *msg,...)
 Setzt einen Fehler. Mehr ...
 
void ppl6::SetError (ppluint32 errorcode, CString &msg)
 Setzt einen Fehler. Mehr ...
 
void ppl6::SetError (ppluint32 errorcode, ppluint32 suberrorcode, const char *msg,...)
 Setzt einen Fehler. Mehr ...
 
void ppl6::SetErrorFromErrno (const char *msg,...)
 Setzt einen Fehler abhängig vom Fehlercode der errno-Variablen. Mehr ...
 
PPL_ERROR * ppl6::StoreError ()
 Fehler speichern. Mehr ...
 
int ppl6::StoreError (PPL_ERROR *e)
 Fehler speichern. Mehr ...
 
int ppl6::TranslateErrno (int e)
 Übersetzt ERRNO in einen PPL-Fehlercode. Mehr ...
 

Dokumentation der Funktionen

pplint32 ppl6::AttachErrorHandler ( const pplchar *  geterrorfunctionpplint32 code,
pplint32  first,
pplint32  last 
)

Damit die Library selbst definierte Fehlercodes ausgeben kann, muss eine entsprechende Routine in das System eingeklinkt werden. Dies geschieht mit dieser Funktion.

Parameter
geterrorfunctionPointer auf eine Funktion, die zu einem Fehlercode den jeweiligen Text zurückgibt
firstNummer des ersten Fehlercodes, der von dieser Funktion bearbeitet wird
lastNummer des letzten Fehlercodes
Rückgabe
Bei Erfolg gibt die Funktion 1 zurück, bei einem Fehler 0. Der Fehler kann über die Fehlerfunktionen abgefragt werden.
Zu beachten
Eine so hinzugefügte Fehlerroutine kann nicht wieder gelöscht werden
Example:
static char * errors[] = {
"Mein erster Fehlercode", // 70000
"Noch ein Fehler", // 70001
NULL
};
static const char *myerrors(int code)
{
int max=sizeof(errors) / sizeof(char *)-2;
if (code<70000 || code>70000+max) return "Unknown Error";
code-=70000;
return (errors[code]);
}
int main(int argc, char **argv)
{
ppl6::AttachErrorHandler(myerrors,70000, 71000);
ppl6::SetError(70001,"Nur ein Test");
}
Siehe auch
Fehlerfunktionen
void ppl6::ClearError ( PPL_ERROR *  e)
int ppl6::DisplayError ( )

Zeigt den zuletzt aufgetretenen Fehler in einem Fenster an

Zu beachten
Diese Funktion funktioniert zur Zeit nur unter Windows
Siehe auch
Fehlerfunktionen
CString ppl6::Error ( )

Speichert den letzten aufgetretenen Fehler in einem String

Rückgabe
CString, der die Fehlerbeschreibung enthält
Siehe auch
Fehlerfunktionen
void ppl6::Error2String ( CString &  str)

Speichert den letzten aufgetretenen Fehler in einem String

Parameter
[out]strEin Pointer auf eine CString-Klasse, in der der Fehlertext gespeichert wird.
Siehe auch
Fehlerfunktionen
CString ppl6::Error2String ( )

Speichert den letzten aufgetretenen Fehler in einem String

Rückgabe
CString, der die Fehlerbeschreibung enthält
Siehe auch
Fehlerfunktionen
void ppl6::ExtendError ( ppluint32  errorcode)

Der bisherige Fehlercode und Text wird in einen String gewandelt und als Zusatztext für den neuen Fehlercode verwendet.

Parameter
errorcodeNeuer Fehlertext
const pplchar * ppl6::GetError ( )

Liefert den Fehlertext zum letzten aufgetretenen Fehlercode zurück.

Rückgabe
Der Text zu dem Fehlercode. War der Fehlercode unbekannt, wird "Unbekannter Fehlercode" zurückgegeben.
Siehe auch
Fehlerfunktionen
const pplchar * ppl6::GetError ( pplint32  code)

Liefert den Fehlertext zu einem bestimmten Code zurück.

Parameter
codeDer gewünschte Fehlercode.
Rückgabe
Der Text zu dem Fehlercode. War der Fehlercode unbekannt, wird "Unbekannter Fehlercode" zurückgegeben.
Siehe auch
Fehlerfunktionen
pplint32 ppl6::GetErrorCode ( )

Liefert den Fehlercode des zulTranslateErrno(errno);etzt aufgetretenen Fehlers zurück

Rückgabe
Liefert den Fehlercode des zuletzt aufgetretenen Fehlers zurück
Siehe auch
Fehlerfunktionen
const pplchar * ppl6::GetExtendedError ( )

Wurde mit SetError außer dem Fehlercode auch ein optionaler Text gesetzt, kann er mit dieser Funktion ausgelesen werden.

Rückgabe
Liefert einen char-Pointer auf den Text. War kein zusätzlicher Text gesetzt, wird ein leerer String zurückgegeben.
Siehe auch
SetError
Fehlerfunktionen
pplint32 ppl6::GetSubError ( )

Liefert den zusätzlichen Fehlercode des zuletzt aufgetretenen Fehlers zurück

Rückgabe
Liefert den zusätzlichen Fehlercode des zuletzt aufgetretenen Fehlers zurück
Siehe auch
Fehlerfunktionen
void ppl6::PrintError ( )

Gibt den letzten aufgetretenen Fehler auf STDOUT aus

Siehe auch
Fehlerfunktionen
void ppl6::PrintPFPErrors ( )
void ppl6::PushError ( )
Siehe auch
PopError
void ppl6::RestoreError ( PPL_ERROR *  e,
bool  clear 
)
void ppl6::SetError ( ppluint32  errorcode)

Setzt einen Fehler. Diese Funktion ist mehrfach definiert und unterscheidet sich nur durch ihre Parameter:

void SetError(ppldd errorcode);
void SetError(ppldd errorcode, char *msg, ...);
void SetError(ppldd errorcode, CString *msg);
void SetError(ppldd errorcode, ppldd suberrorcode, char *msg=NULL, ...);
Parameter
errorcodeDer Fehlercode, der gesetzt werden soll
Siehe auch
Fehlerfunktionen
void ppl6::SetError ( ppluint32  errorcode,
const char *  msg,
  ... 
)

Setzt einen Fehler. Diese Funktion ist mehrfach definiert und unterscheidet sich nur durch ihre Parameter:

void SetError(ppldd errorcode);
void SetError(ppldd errorcode, char *msg, ...);
* void SetError(ppldd errorcode, CString *msg);
void SetError(ppldd errorcode, ppldd suberrorcode, char *msg=NULL, ...);
Parameter
errorcodeDer Fehlercode, der gesetzt werden soll
msgEin optionaler Formatstring
...Weitere Parameter für den Formatstring
Siehe auch
Fehlerfunktionen
void ppl6::SetError ( ppluint32  errorcode,
CString &  msg 
)

Setzt einen Fehler. Diese Funktion ist mehrfach definiert und unterscheidet sich nur durch ihre Parameter:

void SetError(ppldd errorcode);
void SetError(ppldd errorcode, char *msg, ...);
void SetError(ppldd errorcode, CString &msg);
void SetError(ppldd errorcode, ppldd suberrorcode, char *msg=NULL, ...);
Parameter
errorcodeDer Fehlercode, der gesetzt werden soll
msgEin String mit optionalem Fehlertext
Siehe auch
Fehlerfunktionen
void ppl6::SetError ( ppluint32  errorcode,
ppluint32  suberrorcode,
const char *  msg,
  ... 
)

Setzt einen Fehler. Diese Funktion ist mehrfach definiert und unterscheidet sich nur durch ihre Parameter:

void SetError(ppldd errorcode);
void SetError(ppldd errorcode, char *msg, ...);
void SetError(ppldd errorcode, CString *msg);
void SetError(ppldd errorcode, ppldd suberrorcode, char *msg=NULL, ...);
Parameter
errorcodeDer Fehlercode, der gesetzt werden soll
suberrorcodeEin zusätzlicher optionaler Fehlercode
msgEin optionaler Formatstring
...Weitere Parameter für den Formatstring
Siehe auch
Fehlerfunktionen
void ppl6::SetErrorFromErrno ( const char *  msg,
  ... 
)

Diese Funktion setzt einen Fehler, dessen Code vom Inhalt der errno-Variablen abhängt.

Parameter
msgEin optionaler Formatstring
...Weitere Parameter für den Formatstring
Siehe auch
Fehlerfunktionen
ppl6::TranslateErrno(int e)
PPL_ERROR * ppl6::StoreError ( )

Falls PushError und PopError nicht verwendet werden können, kann mit diesem Befehl der Fehler in einer Variablen gespeichert werden. Mit RestoreError kann der gespeicherte Fehler wieder eingelesen werden, mit ClearError wird er gelöscht.

Siehe auch
Fehlerfunktionen
int ppl6::StoreError ( PPL_ERROR *  e)

Falls PushError und PopError nicht verwendet werden können, kann mit diesem Befehl der Fehler in einer Struktur gespeichert werden. Mit RestoreError kann der gespeicherte Fehler wieder eingelesen werden, mit ClearError wird er gelöscht.

Siehe auch
Fehlerfunktionen
int ppl6::TranslateErrno ( int  e)

Diese Funktion übersetzt die errno-Variable des Betriebssystems in einen PPL-Fehlercode

Parameter
eDer Wert aus der errno-Variablen
Rückgabe
Der Dazugehörige PPL-Fehlercode oder "3", wenn der Code der errno-Variablen nicht bekannt ist
Siehe auch
ppl6::SetErrorFromErrno(char *msg, ...)