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:
|
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 ...
|
|
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
-
geterrorfunction | Pointer auf eine Funktion, die zu einem Fehlercode den jeweiligen Text zurückgibt |
first | Nummer des ersten Fehlercodes, der von dieser Funktion bearbeitet wird |
last | Nummer 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",
"Noch ein Fehler",
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)
{
}
- 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
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] | str | Ein 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
-
errorcode | Neuer 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
-
code | Der 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 |
( |
| ) |
|
void ppl6::PrintPFPErrors |
( |
| ) |
|
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,
char *msg, ...);
void SetError(ppldd errorcode, CString *msg);
void SetError(ppldd errorcode, ppldd suberrorcode,
char *msg=NULL, ...);
- Parameter
-
errorcode | Der 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,
char *msg, ...);
*
void SetError(ppldd errorcode, CString *msg);
void SetError(ppldd errorcode, ppldd suberrorcode,
char *msg=NULL, ...);
- Parameter
-
errorcode | Der Fehlercode, der gesetzt werden soll |
msg | Ein 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,
char *msg, ...);
void SetError(ppldd errorcode, CString &msg);
void SetError(ppldd errorcode, ppldd suberrorcode,
char *msg=NULL, ...);
- Parameter
-
errorcode | Der Fehlercode, der gesetzt werden soll |
msg | Ein 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,
char *msg, ...);
void SetError(ppldd errorcode, CString *msg);
void SetError(ppldd errorcode, ppldd suberrorcode,
char *msg=NULL, ...);
- Parameter
-
errorcode | Der Fehlercode, der gesetzt werden soll |
suberrorcode | Ein zusätzlicher optionaler Fehlercode |
msg | Ein 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
-
msg | Ein 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
-
e | Der 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, ...)