Ich habe meinen eigenen Rückgabetyp und Funktionen wie folgt definiert:
%Vor%Allerdings bin ich ein wenig unsicher bezüglich der Fehlerart Werte hier; Was ist Standard / Best Practice für Werte von Fehlerrückmeldungen in C / C ++ - negativ oder positiv ?
Aktualisierung: Danke für deine Antworten! Ich war auf der Suche nach Informationen über C und C ++, aber ich weiß auch, dass dies gute Fragen zur allgemeinen Struktur und den Methoden der einzelnen Sprachen aufwirft (Ausnahmen, Fehlercodes, Objektrückgaben usw.).
Das sind wirklich zwei völlig verschiedene Fragen (C- und C ++ - Versionen), die als eine getarnt sind.
In C ++ ist die Antwort einfach: Verwenden Sie Rückgabewerte für ... zurückgegebene Datenwerte und Ausnahmen für Fehler- / Ausnahmefälle. Verwenden Sie keine Rückgabewerte für die Fehlerprüfung in reinem C ++ (eine C-Bibliothek-API zu C ++ ist eine andere Geschichte).
In C haben Sie diese Option nicht, also würde ich vorschlagen, 0 für Erfolg und negative Zahlen für Fehlercodes zu verwenden. Dies lässt die Flexibilität, falls gewünscht, positive Zahlen für zusätzliche Erfolgsinformationen zu verwenden (zum Beispiel read
Aufrufe)
C ++:
Ich weiß nicht über C ...
... aber in C ++ ist die Idee, im Allgemeinen keine Fehlercodes zu verwenden.
Ich meine nicht, dass Sie Ausnahmen verwenden sollten, aber ein Fehlercode ist nicht wirklich zu informativ (fehlt Kontext, was ist der Wert von FILE_NOT_FOUND
, wenn der Dateiname unbekannt ist?).
In den Fällen, in denen ich keine Ausnahmen verwendete, tendierte ich dazu, vollständig ausgeblendete Fehlerobjekte zu bevorzugen. Ein Beispiel könnte sein:
%Vor%Hier erhalten Sie entweder eine Datei oder einen Fehler, je nachdem, was gerade passiert.
Es gibt mehrere Konventionen zur Auswahl:
GetLastError()
HRESULT
zurück, der den spezifischen Fehlercode enthält. errno
suchen.
Im Allgemeinen ist es wichtiger, dass Sie Ihre Konvention konsistent verwenden, als die Konvention, die Sie verwenden.
Übrigens, einige Beispiele dafür, wie das nicht geht, finden Sie in den Header-Dateien von Microsoft:
%Vor% Achten Sie auch auf zwei verschiedene Fehlerwerte für HANDLE
in Windows: entweder 0 oder INVALID_HANDLE_VALUE