libxml2 Fehlerbehandlung
Schreibe ich einen kleinen wrapper für libxml2 in C++, und ich bin versucht, herauszufinden, wie Fehler zu behandeln. Jetzt lassen Sie uns sagen, ich will nur drucken Sie Sie aus. Hier ist, was ich habe, zu präsentieren:
Mein Fehler-handling-Funktion:
void foo(void *ctx, const char *msg, ...) {
cout << msg << endl;
return;
}
Initialisiert wie diese:
xmlGenericErrorFunc handler = (xmlGenericErrorFunc)foo;
initGenericErrorDefaultFunc(&handler);
Allerdings, wenn ich parse eine schlechte XPath, bekomme ich diese Ausgabe:
%s
Ohne die error-handling-code, bekomme ich diese:
XPath-Fehler : Ungültiger Ausdruck //.@foobar ^
Offensichtlich irgendwann mein Fehlerbehandlung wird mehr tun, als Sie einfach drucken Sie die Fehlermeldung (es wird protokolliert, um eine Datenbank oder so etwas), aber jetzt - wie kann ich erreichen, dass Fehler-string?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den drei Punkten am Ende der argument-Liste für Sie, die Funktion foo() bedeutet, dass es dauert, eine variable Anzahl von Argumenten. Um drucken zu können, denen Sie etwas tun können, wie folgt aus (nicht getestet):
xmlGenericErrorFunc
. Was du hast ist gut genug für meine Zwecke aber. Danke!Wie bereits erwähnt, wenn das ist Ihre Handhabung Funktion:
können Sie es mit diesem libxml2-Funktion
wenn Sie einen Kontext zu übergeben, d.h. ein struct,Daten,Klasse was auch immer-Zeiger gecastet auf void* ist, kann man ihn als erstes argument.
Beachten Sie, dass foo aufgerufen werden, eine Menge, zum Beispiel, wenn Sie einen parse-Fehler jedes mal, wenn libxml fügt eine Zeile zu der Fehlermeldung.