Fehlerbehandung mit Signalen
Verfasst: 9. November 2010 21:11
Hallo,
mich würde mal interessieren, wie ihr das genau mit Klassen & Fehlerbehandlung macht?
Ein Beispiel:
Ich habe eine Klasse SysData, diese Klasse holt sich via einem QHttp Objekt Daten aus dem Internet, verarbeitet diese, und stellt bestimmte Daten dann den User über Methoden bereit.
In dieser Klasse könnten nun ein haufen von Fehlern auftreten:
1.) Die Usereingaben, welche der Klasse übergeben werden, könnten Fehler beinhalten.
2.) QHTTP Object: Die HTTP Anfrage könnte eine Menge Fehler erzeugen wie keine Internet- Verbindung, DNS Fehler,...
3.) Nach dem abholen der Daten via HTTP könnte beim verarbeiten der Daten ein Fehler auftreten
4.) und .. und .. und ..
Ich hab mir nun überlegt, ich lege ein enum mit allen möglichen Fehlern der Klasse an:
Dann richte ich ein Signal ein:
Tritt nun ein Fehler in der Klasse aus, schmeiße ich folgendermaßen ein Signal:
Wie löst ihr solche Dinge bei Klassen, welche eine Menge an Fehler werfen könnten??
Was haltet ihr von meiner Idee? Verbesserungsvorschläge?? Danke!
mich würde mal interessieren, wie ihr das genau mit Klassen & Fehlerbehandlung macht?
Ein Beispiel:
Ich habe eine Klasse SysData, diese Klasse holt sich via einem QHttp Objekt Daten aus dem Internet, verarbeitet diese, und stellt bestimmte Daten dann den User über Methoden bereit.
In dieser Klasse könnten nun ein haufen von Fehlern auftreten:
1.) Die Usereingaben, welche der Klasse übergeben werden, könnten Fehler beinhalten.
2.) QHTTP Object: Die HTTP Anfrage könnte eine Menge Fehler erzeugen wie keine Internet- Verbindung, DNS Fehler,...
3.) Nach dem abholen der Daten via HTTP könnte beim verarbeiten der Daten ein Fehler auftreten
4.) und .. und .. und ..
Ich hab mir nun überlegt, ich lege ein enum mit allen möglichen Fehlern der Klasse an:
Code: Alles auswählen
enum errors {
ERROR_USER_INPUT, // Fehler bei der Usereingabe
ERROR_HTTP_NO_CONNECTION,
ERROR_HTTP_DNS_ERROR,
ERROR_PARSE_HTTP_DATA,
....
....
}Code: Alles auswählen
signals:
void error(Klassname::errors, QString errorMessage = "no error text");Code: Alles auswählen
emit error(ERROR_USER_INPUT, tr("Es wurde ein ungültiger Name angegeben")Was haltet ihr von meiner Idee? Verbesserungsvorschläge?? Danke!