Stilfrage zu Return Codes
-
hi!
Ich schreibe momentan eine Library, die mit PCI Geräten kommuniziert. Dabei werden viele geschachtelte Methoden aufgerufen.
Da in jeder Methode etwas "schief gehen" kann, wird immer ein int als Rückgabewert zurückgegeben. "Eins" bedeutet "success". Alles andere hat viele unterschiedliche Bedeutungen.
Wie schleife ich solche return Codes am besten durch/ Wie handhabt ihr sowas?
So wie es ist, ist es (jedenfalls für mich) sehr fehleranfällig.
Beispiel:
int funcA() { if (Fehler1) return -1; if (Fehler2) return -2; return 1; // alles gut! } int funcB() { if (Fehler1) return -1; if (Fehler2) return -2; int retFuncA = funcA(); if (retFuncA != 1) { if (retFuncA == -1) return -3; if (retFuncA == -2) return -4; } return 1; // alles gut! } int main() { int retFuncB = funcB(); if (retFuncB != 1) //Fehlercodes decodieren }
-
Exceptions benutzen. Die schleifen automatisch durch.
-
Verwende Exceptions. Hier drei Artikel aus unserem Magazin:
http://magazin.c-plusplus.net/artikel/Exception-Handling
http://magazin.c-plusplus.net/artikel/Modernes Exception-Handling Teil 1 - Die Grundlagen
http://magazin.c-plusplus.net/artikel/Modernes Exception-Handling Teil 2 - Hinter den KulissenGrüssli
-
Ja, Exceptions sind wirklich vorteilhaft. Aber auch nicht ohne...
Hier gibt es ein paar gute Erläuterungen:
http://magazin.c-plusplus.net/artikel/Exception-Handling
http://magazin.c-plusplus.net/artikel/Modernes Exception-Handling Teil 1 - Die Grundlagen
http://magazin.c-plusplus.net/artikel/Modernes Exception-Handling Teil 2 - Hinter den Kulissen
-
...krass seid ihr schnell!
danke für die links, ich werd sie mir in Ruhe durchlesen!
Gruß